void test0701()
{
int a = 10;
int b = 20;
int c = 30;
int* arr[] = { &a, &b, &c };
*arr[1] = 200;
printf("a=%d\n", a);
printf("b=%d\n", b);
printf("c=%d\n", c);
}
void test0702()
{
// 二级指针
char* arr[] = { "hello", "world", "nihao", "ya" };
printf("%c\n",*arr[0]); // h
printf("%c\n",*arr[1]); // w
printf("%c\n",*(arr[0]+1)); // e
// arr[0]代表的是char*类型数组中的第一个char*,也就是第一个指针,解引用将地址内容取出。地址+1是下一个char
// arr[1]数组的第二个元素。
}
int main()
{
test0702();
system("pause");
return 0;
}
多级指针
void test0703()
{
int a = 10;
int* p = &a;
int** pp = &p;
// 二级指针前面加*代表一级指针的值。即变量的地址。
*pp = &a;
//再解引用,就可以取值。
**pp = 20;
printf("a = %d\n", a); // 20;
}
&符号就是取地址。然后指针保存地址。
解引用,就是取值。
- 二级指针解引用,就是一级指针的地址。就是一级指针本身。一级指针内容为变量的地址。
- 再次解引用将一级指针所指向变量的地址内容取出。