黑马程序员技术交流社区
标题:
C语言-指针指向的提问。
[打印本页]
作者:
sdzwb89
时间:
2015-5-19 14:33
标题:
C语言-指针指向的提问。
本帖最后由 sdzwb89 于 2015-5-20 13:05 编辑
// 定义一个int类型的数组
2 int a[4] = {1, 2, 3, 4};
3
4 // 定义一个int类型的指针,并指向数组的第0个元素
5 int *p = a;
复制代码
第5行的 int *p =a; 跟 int *p = a[0]; 有区别吗?不是很清楚,求解答!
作者:
gclforios
时间:
2015-5-19 14:52
有区别的,第5行int *p = a为初始化int型指针为数组首地址,而 int *p = a[0];是错误的,a[0]表示的是数组中第一个元素数值而非地址,
作者:
stein
时间:
2015-5-19 14:56
int *p = a[0] , p 是 指针, a[0] 是具体数值 1 , 等号 左右两边 类型不一样, 不能赋值 报错.
作者:
sdzwb89
时间:
2015-5-19 15:03
stein 发表于 2015-5-19 14:56
int *p = a[0] , p 是 指针, a[0] 是具体数值 1 , 等号 左右两边 类型不一样, 不能赋值 报错. ...
是不是 *p=&a[0]; 和*p=a;是一样的?
作者:
stein
时间:
2015-5-19 15:26
#include <stdio.h>
int main()
{
// 定义一个int类型的数组
int a[4] = { 1, 2, 3, 4 };
// 定义一个int类型的指针,并指向数组的第0个元素
int * p1 = a;
int *p2 = &a[0];
printf("%d\n",p1 == p2); // 1 表示一样.. 0 表示不一样..
return 0;
}
复制代码
作者:
等风继续吹
时间:
2015-5-19 21:27
嘿嘿,我还没注意到,这点要注意
作者:
追随自然
时间:
2015-5-19 22:43
a[0]代表的是第一个元素, int*p=&a[0]; int*p=a;是一样的
作者:
shao
时间:
2015-5-20 23:14
过来学习下。。。。。。。。。。。。。
作者:
用晦而明
时间:
2015-7-7 17:23
第5行应该是错的
首先 P是指向int型的指针变量
而a是一个有4个int型元素的数组
int * p1 = a; 这样做是不合理的
如果 想指向第一个元素应该 int * p1 = &a[0];
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2