黑马程序员技术交流社区

标题: 关于指针变量的问题 [打印本页]

作者: Silent_memory    时间: 2014-3-13 22:18
标题: 关于指针变量的问题
本帖最后由 Silent_memory 于 2014-3-25 22:58 编辑

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

作者: z82454642    时间: 2014-3-13 22:48
这两个表达式效果是一样的
作者: lixiangzhou    时间: 2014-3-13 23:10
两个表达式的值都是正确的
A: *p = a;         // 这里表示把变量a的值赋值给指针p所指向的变量
B:: p = &a;       // 这里表示把变量a的地址赋值给指针p
作者: 菜鸟de无奈    时间: 2014-3-14 11:07
两个表达式的语法都是正确的。
A的表达式需要根据前面代码才能判断是否有意义。
作者: keycola    时间: 2014-3-15 21:03
假如我定义一个指针变量 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;
      这就是没有意义的了

不知道你是否明白了没





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2