这语序...没太明白您想问啥....我就按自己的理解给您解释吧- -!
- #include <stdio.h>
- int main()
- {
- // 定义一个字符型的变量c ,里面存储'A'
- char c = 'A';
- // 定义一个指向字符型变量的指针q,并且将其指向c所在的地址
- char *q= &c;
- // 将'V'赋值给指针q所指向的存储空间,就是赋值给c
- *q = 'V';
- /* q是指针,所以q里存的是地址,*q表示的是q所在地址里的值,&*q代表(*q)这个值所在的地址,&*q == q
- char *p = q 是建一个指向字符型变量的指针p,p中存储的是q指向的地址&c,
- 所以说这俩指针 p 和 q就都指向c了, p == q
- */
- char *p = &*q;
- // 将'v'赋值到p指向的地址
- *p = 'v';
- // 建一个指向指针的指针qp,被指向指针的地址是q的地址,被指向指针的类型是char。即qp中存储的是一个指针的地址,即q的地址。
- char **qp =&q;
- /* 这句话是将qp指向的指针所指向的值赋值成'x'.
- 因为qp指向一个地址,*qp是qp指向的地址(q)中的值,即*qp==q。所以**qp == *(*qp) == *q == c
- 说白了就是将'x'赋值给c
- */
- **qp ='x';
- // 这道题中 *pq , p和q中存储的都是c的地址,你可以试着打印
- printf("*qp =%p, p = %p, q = %p\n",*qp,p,q);
- printf(" = c%c\n", c);
-
- return 0;
- }
复制代码
不知道说清楚没有,有不明白的地方再问 |