2021-06-06 · 6분
正则表达式速查表
正则表达式参考:什么是正则表达式、元字符(^x、x$、x+、x?、x*、分组、量词)、字符类/转义序列([xy]、\b、\d、\s、\w),以及 g/i/m 标志。
2021-06-04 · 2분
这篇文章发布已超过两年,内容可能已过时。
C、C++ 指针
让其指向特定内存位置的变量称为指针(pointer)。也就是说,知道地址才能使用。
我们至今声明变量时,并不认为那个变量被记录在内存里,只想着声明的名字和值来使用。但实际上,声明 int a; 就相当于说 '在内存 x132453647(任意)以 int 类型、变量名 a、未初始化状态使用'。这时输入 a = 10; 就相当于 '把内存 x132453647 处的值改成 10'。
所以我们使用指针,意思是 '去找内存 x132453647(任意)',而不是找 '名为 a' 的变量。知道地址后,自然也就能知道值了。
指针的样子也和以前声明变量非常相似。数据类型也有 int、float、double、long、char 等。像变量一样声明,只是在中间加个 * 即可。
例如
//int 型指针
int *a;
//float 型指针
float *a;
//double 型指针
double *a;
可以像上面这样声明。
指针的声明与初始化——怎样才能在声明的同时初始化呢?还记得我们学 "scanf" 时用过 "&" 这个符号吗?这个 "&" 符号正是告知地址的符号。
例如
#include <stdio.h>
int main() {
int num1 = 5;
int num2 = 10;
int *num1Ptr = &num1;
int *num2Ptr = &num2;
printf("%d %d\n", num1, *num1Ptr);
printf("%d %d\n", num1, num1Ptr);
}
/*
输出:5 5
10 10
*/
可以像上面这样做。稍作说明:声明 int 型变量 num1、num2 后,也声明 int 型指针 num1Ptr、num2Ptr,
int* num1Pointer = &num1;
int * num1Pointer = &num2;
输入这些后,可以确认它们各自接收了 num1 和 num2 的地址。结果可以确认 num1 值和 *num1Ptr 的值输出一致。
声明 int 型指针 int* p,并做 p = &num1——把 num1 变量的值赋给 int 型指针变量 p 时,
像 printf("%d", *p) 那样给 p 加 * 使用,表示 p 所指地址处的值;
像 printf("%d", p) 那样只用 p,表示 p 正指向的地址。
原文(韩语): tistory — 发布于 2021-06-04,已迁移至本博客。本翻译由 AI 协助完成。
…