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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© holfioo 中级黑马   /  2015-5-10 15:01  /  1687 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 holfioo 于 2015-5-12 22:32 编辑

提问以下程序:
  1. int main()
  2. {
  3.     int a = 10 ;
  4.     //int *p = a ;  为啥不能这么写。  ①
  5.     int *p = &a ; //一定要写成这样  ②
  6.     return 0;
  7. }
复制代码
*p 不就是指向 a的值么...
①这样写可以么?

8 个回复

倒序浏览
定义变量的时候那个*号没有作用,p存的是地址,int *p = &a;相当于 先定义一个int *p; 然后再给p赋值p = &a;
回复 使用道具 举报
int *p = &a ; 表示 int *p;  p=&a;  理解int *当成一种指针数据类型,给p赋值为&a。
回复 使用道具 举报
就是把*p=&a这一步省略了,
回复 使用道具 举报
int *p = &a 的意思是定义了一个指针p并指向a的地址,如果换成int *p = a 那就成了定义指针p指向a,但是a是int变量不是地址
回复 使用道具 举报
int a[10]; int *p=a; 这样可以,因为int *p 指向的是a数组的首地址,int a;就不可以了,a是变量
回复 使用道具 举报
指针变量P指的是是一个地址,它是用来存储地址的,变量a不是地址需要加一个运算符&,这是我的理解

点评

我现在已经理解。int *是一个整体。。 拆分出来就是,int *p ; p=&a。。 这样就瞬间理解了。 *p = a  发表于 2015-5-11 18:38
回复 使用道具 举报
holfioo 来自手机 中级黑马 2015-5-11 19:21:28
8#
手机端改不了标题。谢谢大家。现在基本明白这个赋值的意思啦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马