数组的名称可以看作是常量指针(定义数组变量a[],那么a本身就是一个指针么)
![数组的名称可以看作是常量指针(定义数组变量a[],那么a本身就是一个指针么)](/static/images/content_image/pumpkins-5646939_1920.jpg)
本文目录
- 定义数组变量a[],那么a本身就是一个指针么
- 二维数组名是不是一个“指针”
- c语言中的数组名字是指针常量还是常量指针呢
- 数组名的本质也是一个指针么
- 为什么说数组名是指针常量还有就是数组是在什么时候分配内存的
- c中,数组名跟指针有区别吗
- 数组为什么是指针常量
- 一维 数组名 为指针常量 的原因
- 数组名和指针变量的区别
定义数组变量a[],那么a本身就是一个指针么
在编程语言中一般用变量的名字来取它的值。指针变量的值是地址,而数组名本身就代表数组的首地址,所以可以把数组名也看成指针。只不过数组名是不可改变其值的,所以可以看作常量指针。
二维数组名是不是一个“指针”
1,无论是一维,二维或N维数组,数组名就是一个指针常量,它代表数组元素在内存中的首地址。
2,二维数组名不占存储空间的,如1,数组名只是一个指针常量,打个比方,你的名字指向你这个人,但是你的名字就是人吗?显然不是。数组名也是这个意思。
对于你的提问中:
在程序里,所有数组都必须是先定义好再使用,也即是说在编译之前,每个访问数组的地方都已经确定了,或者说每个需要出现数组名的地方都已经出现了数组名了
这句话是有问题的,只有静态数组的存储空间和区域是确定的,而动态数组的存储空间和区域是不确定的,只是在使用数组前必须定义它的类型,到底是char or int 等等。
对于标签一说,还不如就把数组名当做指针常量来理解呢。你记住,数组名就代表了一个元素首地址。就是一个指针常量。
你也可以自己编程验证嘛,一个很简单的程序:
#include《stdio.h》
void main()
{
int a={0,1,2};
printf("%d\n",a);
printf("%d\n",&a);
}
程序第一行输出的就是数组a的首地址
第二行输出的是a的地址
但是两个值是一样的。
说明数组名就是代表数组的首地址,这是确确实实存在的。希望能帮助你。
c语言中的数组名字是指针常量还是常量指针呢
数组名是指针常量,指针不是有常量指针和指针常量和常量常指针吗?地址是绝对的,score指向受保护,但首地址的内容可以改变,所以数组首地址应该是指针常量int *const score,你的第二个注释说地址就是指针,应该是指针常量,指针就是地址是一种宽泛的说法,不对请指正哈
数组名的本质也是一个指针么
数组名是个地址,不是指针, 它是个常量,不是变量。
int a = {1, 2, 3};
因为a是个地址,所以我们可以通过 *(p+2) 来访问a。
因为a是个地址常量,不是指针,我们不可以使用*a++这样的语句。
为什么说数组名是指针常量还有就是数组是在什么时候分配内存的
因为数组是连续存储的
如a
=1,a=3;
数组什么时候分配内存的问题
只要定义了一个数组,操作系统就自动给这个数组分配了空间
如a
=
{1,2,3,4,5};分配了5个连续单元的内存空间
希望你能看懂。
c中,数组名跟指针有区别吗
其实可以认为数组名就是一个不可更改的常量指针。但是,严格来说,二者有一定区别,比如sizeof(a),a为数组名的时候,算出来是a这个数组所占字节数,但是如果a是指针,不管指向什么,结果都是一个int的字节数(取决于特定机器)。因而,有人认为数组名是一个可以退化为常量指针的类型,这种退化在数组名作为函数形参的时候表现得最为明显,可以参考数组名作为形参退化为指针的问题。
数组为什么是指针常量
①char xingming="张三"; //这样可以;
②char xingming="张三"; //这样就不行了
原因如下:
①的意思相当于:定义一个大小为50的字符数组,第一个字符(xingming)值为空;
②有两个错误:(1)数组越界:数组xingming有50个元素,但下标是从0开始至49的,没有到50;
(2)xingming在这里不是定义,所以表示下标50的元素(一个元素,即一个字符),而后面给的值确是一个字符串;
说明:
数组定义时,后面的等于相当于给每个元素分别赋值,如果值不够,后面的元素值就为0(或者空),而除定义之外,任何地方,数组名加下标都表示一个元素;另外补充一点:数组定义时如果,要求给定的元素个数等于定义的元素个数,中括号里面的数值可以不要,如:
int a={1,2,3,4}; //这句话相当于定义了一个大小为4的int型数组,各个元素的值分别为1,2,3,4;
a=5; //这句话相当于将第4个元素的值改为5;
一维 数组名 为指针常量 的原因
这也不是什么规定.这与数组的存储方式有关,你知道,数组在定义后,只要程序运行了,系统就会为它分配一个连续的存储单元,每个存储单元都是有确定的地址的.而数组名就对应着那个连续的存储单元的首地址,即第一个元素的地址,它就代表这个地址,这是个定值,也就是常量.因为指针的内容都是地址,数组名的内容也是地址,所以,才有数组名是指针常量这一说.这个词实际就是说数组名就是一个地址常量.既是常量,怎么能对它赋值呢?2就是2,你可以对它再进行赋值动作吗?不知我这样说,你是否能明白.就这样,朋友.
数组名和指针变量的区别
数组名可以认为是常量指针
也就是说 二者访问是类似的
但是数组名不能改变值
而指针变量的值是可以变的。
![数组的名称可以看作是常量指针(定义数组变量a[],那么a本身就是一个指针么)](/static/images/content_image/tea-623796_1920.jpg)
更多文章:
androidapp源码免费下载(如何实现APK的反编译得到APK的源码)
2026年9月22日 18:00
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30





