c语言数组不可以当成指针使用,但是指针可以当成数组使用

假如在主函数中int*t;把他当成数组使用t[3]=5;t++;*t=8;然后输出t[4]和t[1]发现t[4]没有变,但是t[1]变成了8,是不是因为在把指针当成数组使... 假如在主函数中int *t;把他当成数组使用 t[3]=5; t++; *t=8; 然后输出t[4]和t[1] 发现t[4] 没有变,但是t[1]变成了8,是不是因为在把指针当成数组使用时,在用t[3]= 值 赋值时,指针还是指向首地址,所以当t++后指向了t[1]的值而并不是指向了t[4], 展开
 我来答
蒙MengNum1
2016-03-28 · TA获得超过2494个赞
知道大有可为答主
回答量:3004
采纳率:87%
帮助的人:853万
展开全部
指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。
数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。
比如说定义int *w
然后下边就可以用作w[i]
这么对吗?
对的话在什么情况下可以这么使用?

答:不可以,因为w这时还是野指针。只有这样
int *w,a[44];
w=a;
操作后才可以,操作w就与操作a一样了。而且,操作指针比直接操作数组名更方便,因为指针是变量,可以++、--,而数组名是常量,不能++、--。
  你追问的那个红框框中的问题不是指针与数组名的问题,而是“形式参数”与“实际参数”的问题。写函数定义的()中的前面带类型说明符的变量名叫形式参数。形参与实参相比,最大的特点就是不用担心没有赋值或初始化就拿来引用,它们是留着调用时才用实参自动赋值的。而实参则不然,没有赋值时拿来做右值,就会被警告“引用了没有初始化的变量”,而且因为初值是随机的而结果一般都是错误的。
学烟兰雁
2019-10-23 · TA获得超过3.8万个赞
知道大有可为答主
回答量:1.4万
采纳率:27%
帮助的人:908万
展开全部
int
a[10]
;
int
*p=a
;
//定义一维指针p,并指向数组a首地址。
p=a+2

//指向数组a的第三个元素
或写成:
p=
&a[2]
;
//通过&运算符号来取a[2]的地址,赋值给p
p=&a
;
//这是错误的语句!因为,&a的类型是int
**,
而p是int
*类型,所以,类型不相符,不能进行赋值操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式