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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Silent_memory 中级黑马   /  2014-3-13 22:18  /  1170 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Silent_memory 于 2014-3-25 22:58 编辑

假如我定义一个指针变量 int *p;  int a = 10; 那么下面的两个表达式是否是一样效果,还是有一个是错误的。
A: *p = a;
B:: p = &a;

4 个回复

倒序浏览
这两个表达式效果是一样的
回复 使用道具 举报
两个表达式的值都是正确的
A: *p = a;         // 这里表示把变量a的值赋值给指针p所指向的变量
B:: p = &a;       // 这里表示把变量a的地址赋值给指针p
回复 使用道具 举报
两个表达式的语法都是正确的。
A的表达式需要根据前面代码才能判断是否有意义。
回复 使用道具 举报
假如我定义一个指针变量 int *p;  int a = 10; 那么下面的两个表达式是否是一样效果,还是有一个是错误的。
A: *p = a;
B:: p = &a;

这个问题,先回答, *p = a ,这个p没有指向,也就是野指针,所以会出现错误,再就是如果 p 指针有指向的地址空间
         如  int  a = 10 , b =12;
              int  *p = &b;
            
             A, *p = a;
             B, p  = &a;
      这两个也是有区别的,尽管 *p  都等于 10 ,但是 A 选项,则是让 b 也等于了 10
      所以这两者是有区别的
     
     但如果是
          int a = 10 ;
          int *p = &a;
          *p = a;
      这就是没有意义的了

不知道你是否明白了没
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马