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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sdzwb89 中级黑马   /  2015-5-19 14:33  /  1261 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 sdzwb89 于 2015-5-20 13:05 编辑
  1. // 定义一个int类型的数组
  2. 2 int a[4] = {1, 2, 3, 4};
  3. 3
  4. 4 // 定义一个int类型的指针,并指向数组的第0个元素
  5. 5 int *p = a;               
复制代码


第5行的 int *p =a;  跟 int *p = a[0]; 有区别吗?不是很清楚,求解答!

8 个回复

倒序浏览
有区别的,第5行int *p = a为初始化int型指针为数组首地址,而 int *p = a[0];是错误的,a[0]表示的是数组中第一个元素数值而非地址,
回复 使用道具 举报
int *p = a[0] ,   p 是 指针,   a[0] 是具体数值 1 , 等号 左右两边 类型不一样, 不能赋值 报错.
回复 使用道具 举报
stein 发表于 2015-5-19 14:56
int *p = a[0] ,   p 是 指针,   a[0] 是具体数值 1 , 等号 左右两边 类型不一样, 不能赋值 报错. ...

是不是 *p=&a[0]; 和*p=a;是一样的?
回复 使用道具 举报
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     // 定义一个int类型的数组
  5.     int a[4] = { 1, 2, 3, 4 };

  6.     // 定义一个int类型的指针,并指向数组的第0个元素
  7.     int * p1 = a;
  8.     int *p2 = &a[0];

  9.     printf("%d\n",p1 == p2); // 1 表示一样..  0 表示不一样..

  10.     return 0;
  11. }
复制代码
回复 使用道具 举报
嘿嘿,我还没注意到,这点要注意
回复 使用道具 举报
a[0]代表的是第一个元素, int*p=&a[0]; int*p=a;是一样的
回复 使用道具 举报
shao 中级黑马 2015-5-20 23:14:48
8#
过来学习下。。。。。。。。。。。。。
回复 使用道具 举报
第5行应该是错的
首先 P是指向int型的指针变量
而a是一个有4个int型元素的数组
   int * p1 = a; 这样做是不合理的
如果 想指向第一个元素应该   int * p1 = &a[0];
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马