44问答网
所有问题
我定义了一个数组和一个指针 int a[10]; int *p; 为什么p=a;是正确的而a=p是错误的
假设变量都已经初始化
举报该问题
推荐答案 2010-10-23
这明显不行啊。解释如下:数组也是一个指针,但数组在编译的时候地址是已经确定的,是不能改变的。也就是说你可以给数组对所指向的地址赋值,如下:*a=10;但不可以对数组变量赋值,如:a=p;纯指针更加灵活,你可以对它本身赋值,也就是改变它所指向的地址,也可以对它所指向的址赋值。如果执行p=a;则p也指向了a所指向的地址。不明白给我留言。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://44.wendadaohang.com/zd/YWGD3D6WD.html
其他回答
第1个回答 2010-10-23
a是数组名,p是指针
你可以让一个指针指向一个数组,但不能让数组名指向指针,因为数组名对应的地址是固定的,在编译的时候就确定了
第2个回答 2010-10-23
这就是 数组和指针之间的差别!
指针是变量,可以用其它的地址来 赋值!
但是数组是常量,是不能变的!
比如
++p; // right
++a; // error
第3个回答 2010-10-23
数组的变量名a是一个不可改变不可赋值的量。比如不可行的操作:a = p,a++,a--等等。
相似回答
设有
定义
:
int
a[10]
,
*p=a;
为什么p
++合法,
而a
--不合法,请详细说明
答:
这无法“详细”,一句话就解决了:a是数组名,也就是a[0]的地址&a[0],就像声明一个变量i一样其地址&i是不可变更的
;而p是
自
定义的一个指针
变量,程序员想让它指向哪个同类型的变量都可以……
int
a[10]
,char
*p=a
,
为什么
C++中可以用p[i]来给
数组
啊赋值,而不是a...
答:
int a[10];数组名即是数组的首地址;char*p=a;是错误的
;char型指针只能指向char型数据,这里指向一个int型数组是不正确的;改为int*p=a;p指向a数组,也就是说p和a是相等的,所以用p[i] a[i]都可以赋值的
定义数组a[10]
*p,
为什么*p=a和p=a
效果一样
答:
方式不一样,目的相同。
int
a[10]
,
*p=a;
//这是定义时初始化 int b[10],*pb;pb=b; //这是
定义了指针
变量pb,再给pb赋值。
定义
float
a[10]
,
*p;为什么p=
&a[0]合法,p=&a不合法?
答:
0]就是下标为0的元素的地址,也就是指针,赋给p等号两边类型匹配,所以正确
。而a是数组名,C/C++规定它也是指向下标为0的元素的指针,之不过是常指针;&a就是双重指针了,它表示a这个数组一行的指针(*)[10],所以赋给float *型指针p类型不匹配。若是p=a就对了,它造价于p=&a[0]。
大家正在搜
设数组a的定义为:int
已知数组num的定义为:int
java定义一个数组
一维数组的定义方式
数组的大小是固定的吗
怎么定义数组
c语言数组定义和赋值
数组下标的数据类型允许是
二维数组定义
相关问题
a[5]是一个一维数组,定义指针变量int *p,那么请问p...
C语言,指向一维数组元素的指针变量,int i,a[10],...
int a [4][10] ,*p; p=a;这句话为什么错...
C语言中,定义int二维数组a[4][10],定义指针int...
有定义:int a[3][10];定义一个指针p,可以赋值:...
定义二维数组指针 int a[4][5];int *p;p=...
怎么定义指向一个数组指针的指针?比如:我要指向于 int *...
c语言 ,指针问题,设已有定义,int a[10] ,*p;...