A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 为梦想挺身而出 中级黑马   /  2014-5-4 09:14  /  1438 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 为梦想挺身而出 于 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;
}

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

2 个回复

倒序浏览
这语序...没太明白您想问啥....我就按自己的理解给您解释吧- -!
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         //  定义一个字符型的变量c ,里面存储'A'
  5.     char c = 'A';
  6.     //  定义一个指向字符型变量的指针q,并且将其指向c所在的地址
  7.     char *q= &c;
  8.     //        将'V'赋值给指针q所指向的存储空间,就是赋值给c       
  9.     *q = 'V';
  10.         /*  q是指针,所以q里存的是地址,*q表示的是q所在地址里的值,&*q代表(*q)这个值所在的地址,&*q == q
  11.                 char *p = q 是建一个指向字符型变量的指针p,p中存储的是q指向的地址&c,
  12.                 所以说这俩指针 p 和 q就都指向c了, p == q
  13.         */  
  14.         char *p = &*q;
  15.     //                将'v'赋值到p指向的地址
  16.         *p = 'v';

  17.         //  建一个指向指针的指针qp,被指向指针的地址是q的地址,被指向指针的类型是char。即qp中存储的是一个指针的地址,即q的地址。
  18.     char **qp =&q;
  19.         /*  这句话是将qp指向的指针所指向的值赋值成'x'.
  20.                 因为qp指向一个地址,*qp是qp指向的地址(q)中的值,即*qp==q。所以**qp == *(*qp) == *q == c
  21.                 说白了就是将'x'赋值给c
  22.         */  
  23.         **qp ='x';
  24.     //        这道题中 *pq , p和q中存储的都是c的地址,你可以试着打印
  25.         printf("*qp =%p, p = %p, q = %p\n",*qp,p,q);
  26.     printf(" = c%c\n", c);
  27.    
  28.         return 0;
  29. }
复制代码

不知道说清楚没有,有不明白的地方再问

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
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;
}
不知道这么说,你理解不
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马