C语言中数组名和指针的区别
答案:3 悬赏:60 手机版
解决时间 2021-02-11 03:15
- 提问者网友:不要迷恋哥
- 2021-02-10 20:55
C语言中数组名和指针的区别
最佳答案
- 五星知识达人网友:渡鹤影
- 2021-02-10 22:14
数组在当作参数传递时,可以当作指针;当然,参数传递相当于赋值操作,所以用指针来接受数组的值也是可以的。
除此之外,指针就是指针,数组就是数组,一点也不一样,例如
1,数组名不能作为左值,即不能被赋值,也不能进行++ --操作
2,sizeof 数组名 和 sizeof 指针 不同
除此之外,指针就是指针,数组就是数组,一点也不一样,例如
1,数组名不能作为左值,即不能被赋值,也不能进行++ --操作
2,sizeof 数组名 和 sizeof 指针 不同
全部回答
- 1楼网友:逐風
- 2021-02-11 00:14
数组名本质上就是个指针,也就是地址,但是它是一个常指针,是个固定值,而指针是是指针变量的简称,是个变量,这个变量存放的是地址值,它的值是可以改变的。例如:
int *p;
int a,b;
p=&a; //把变量a的地址赋值给指针p,那么指针p就指向了变量a的内存单元
p=&b; //把变量b的地址赋值给指针p,那么指针p就指向了变量b的内存单元
int a[10]; //整型数组,数组名a本质上是一个地址,是首元素地址,它是一个固定值,不能对它进行赋值操作。
- 2楼网友:天凉才是好个秋
- 2021-02-10 23:26
数组和指针的区别:
数组名确实表示指向数组首地址的指针,但这个指针很特别,它的值(指针的值指的是指针所指的地址)不能被改写,能改写的仅仅是其指向的内容,换句话说,数组名只能指向数组的首地址,如果有数组char a[];那么如果出现a = a+1;这是编译都通不过的错误。而对于一个普通的指针是可以的,再比如有数组char a[];那么再定义一个char *p = a;然后再用p = p+1是合法的,这表示让指针p指向&a[1]。
它们的第二个区别是:每当用到数组名这个指针的时候,系统都会传入数组的信息,而普通的指针只是一个4字节的整数,例如:
char a[5];
char *p = a;//指针a和指针p都指向数组a的首地址
cout << sizeof (a) << "##" << sizeof (p) << endl;这时的运行结果是“5##4”
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯