-
一颗星星--------一把钥匙
int x=100; int *ptr = &x;
语义:
- ptr是一个指针变量
- ptr存储是某一变量的地址
- 利用*ptr可以得到某变量的值
指针对const的作用:
const int *p = &a;
- p指针指向变量a的地址
- 因为const修饰int*,标识p不能修改a变量的值;但可以修改p指针指向别的变量的地址
而
int* const p=&a;
- 可以将*p的值修改
- 但是不能将别的变量地址赋值给p,因为const修改是的p变量本身。
而
const int* const p=&a;
- 不可以给p赋值别的变量地址
- 不可以修改*p(a)的值
-
两颗星星----------标识两把钥匙
int x=100; int *p1=&a; int **p2=&p1; printf("*p1=%d,**p2=%d\n",*p1,**p2);
- 指针变量p1存储x的地址;
- 指针变量p2存储变量p1的地址;
- 需要访问x的值使用**p2:通过两次间接访问
-
三颗星星-------------------------标识三把钥匙
int x=100; int *p1=&a; int **p2=&p1; int ***p3=&p2; printf("*p1=%d,**p2=%d,***p3=%d\n",*p1,**p2,***p3);
- 指针需要经过3次的间接访问才能得到变量的值
char *diamond =""; 相当于 char diamond []= {""}
char *p = diamond;
- 指针就是一个地址。