黑马程序员技术交流社区
标题:
指向指针的指针我晕了
[打印本页]
作者:
为梦想挺身而出
时间:
2014-5-4 09:14
标题:
指向指针的指针我晕了
本帖最后由 为梦想挺身而出 于 2014-6-20 18:38 编辑
int main()
{
char c = 'A';
char *q= &c;
*q = 'V';
//1 char *p = &*q; //这样为什么可以和这个
*p = 'v';
//2char **qp =&q;
**qp ='x';
//1和2 的区别在哪里
printf("%c\n", c);
return 0;
}
作者:
桑托尔
时间:
2014-5-4 09:55
这语序...没太明白您想问啥....我就按自己的理解给您解释吧- -!
#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;
}
复制代码
不知道说清楚没有,有不明白的地方再问
作者:
兰闻天
时间:
2014-5-4 09:57
int main()
{
char c = 'A';
char *q= &c;
*q = 'V';
//1 char *p = &*q; // q里存放的是c的地址,*q == c,&*q == &c;
*p = 'v';
//2char **qp =&q; // &q是把q的地址给了*qp,也就是说qp里存放的是q的地址,*qp取出的是q的值 也就是c的地址,**qp 取出的是c的值
**qp ='x';
printf("%c\n", c);
return 0;
}
不知道这么说,你理解不
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2