数组名是指针常量还是指针变量? 请看这两道题!!!

设有如下程序段#include<stdio.h>chars[20]="Beijing",*p;p=s;则执行p=s;语句后,以下叙述正确的是()。答案:AA)可以用*p表... 设有如下程序段
#include <stdio.h>
char s[20]="Beijing", *p;
p=s;

则执行p=s;语句后,以下叙述正确的是( )。答案:A

A)可以用*p表示s[0]

B)s数组中元素的个数和p所指字符串长度相等

C)s和p都是指针变量

D)数组s中的内容和指针变量p中的内容相同

可是教材中讲到“指向数组的指针变量作函数参数时”写到
void f(int arr[],int n)
但是在编译时也将arr按指针变量处理。相当于
voidf(int *arr,int n)
为什么一会是常量一会是变量呢?
展开
 我来答
小兆86
2014-07-30 · TA获得超过802个赞
知道小有建树答主
回答量:990
采纳率:25%
帮助的人:871万
展开全部
一、很明显两次的使用场合是不一样的,一次是全局(或局部)变量,一次是作为函数形参。在函数形参里面因为不能将一个固定长度的数组作为形参传递给函数,只能传递数组的首地址,有时候还需要绑定数组元素个数,所以这个时候以数组形式敲写的代码变成了指针,而且这个一定是编译器自己解释的。
二、说一个数组名变量不是指针变量是因为这个指针值能指向数组的首地址,程序代码不能修改它指向其它的地方,为什么呢,因为,你想啊,前边我们申请了一个数组,然后经过一系列操作将数组的头指针修改了,然后我们再想用这个数组时怎么办,怎么再次获得数组的首地址呢?所以它必须是个常量
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式