当前位置:首页 » 编程语言 » c语言数组和指针的区别

c语言数组和指针的区别

发布时间: 2022-09-03 19:52:34

‘壹’ c语言中,指针和数组的区别和联系

指针就是一个装地址的变量,数组是内存中的一个区域,而数组名是这个区域的首地址。也就是说你在定义指针的时候编译器只分配了一个变量的空间(空间大小由内存地址长度决定),而定义数组的时候编译器分配了一段区域的空间(空间大小由[
]里面的数字和数组的类型决定)。使用上你可以把一个地址赋值给指针,但是不能赋值给数组名。你可以直接给数组里面的变量赋值,这是安全的,因为内存已经申请好了,而给指针里面装个那个地址赋值就要小心了,因为指针里面那个地址很可能会出错。

‘贰’ C语言中:数组指针与指针数组有什么区别

数组指针是指向这个数组首地址的指针,指向对象是这个数组;
指针数组是存放一类指针的数组,这个数组的每个元素都是一个指针;
例子:
int
a[10];
int*
s;
s
=
a;//这里s就是一个数组指针,它的值就是数组a
的首地址;当然,如果a是一个整数,那s就是一个指向整型的指针;
int
a;
int*
s[5];
for(int
i=0;i<5;i++)s[i]=a;
//这里s就是一个指针数组,它的每个元素都是整型变量a的地址

‘叁’ c语言中的数组和指针的区别

C语言中,数组的名称等价于数组的首地址,
当然可以利用指针开辟动态空间,使用方式与数组在形式上相同的,
但是他们有一个本质的区别,数组名相当于一个地址常数,而指针是一个以地址为内容的变量。
指针与数组的关系可以参考下面的网页:
http://..com/question/341950481.html

‘肆’ C语言中数组名和指针的区别

数组名本质上就是个指针,也就是地址,但是它是一个常指针,是个固定值,而指针是是指针变量的简称,是个变量,这个变量存放的是地址值,它的值是可以改变的。例如:

int*p;
inta,b;
p=&a;//把变量a的地址赋值给指针p,那么指针p就指向了变量a的内存单元
p=&b;//把变量b的地址赋值给指针p,那么指针p就指向了变量b的内存单元
inta[10];//整型数组,数组名a本质上是一个地址,是首元素地址,它是一个固定值,不能对它进行赋值操作。

‘伍’ C语言中一维数组和指针有什么区别

指针都没初始化,运行个毛啊。

应该这样:

‘陆’ C语言数组名和指针的区别

数组和指针的区别:
数组名确实表示指向数组首地址的指针,但这个指针很特别,它的值(指针的值指的是指针所指的地址)不能被改写,能改写的仅仅是其指向的内容,换句话说,数组名只能指向数组的首地址,如果有数组char a[];那么如果出现a = a+1;这是编译都通不过的错误。而对于一个普通的指针是可以的,再比如有数组char a[];那么再定义一个char *p = a;然后再用p = p+1是合法的,这表示让指针p指向&a[1]。
它们的第二个区别是:每当用到数组名这个指针的时候,系统都会传入数组的信息,而普通的指针只是一个4字节的整数,例如:

chara[5];
char*p=a;//指针a和指针p都指向数组a的首地址
cout<<sizeof(a)<<"##"<<sizeof(p)<<endl;

这时的运行结果是“5##4”

‘柒’ c语言中数组名和指针变量的区别

数组和指针的区别:
数组名确实表示指向数组首地址的指针,但这个指针很特别,它的值(指针的值指的是指针所指的地址)不能被改写,能改写的仅仅是其指向的内容,换句话说,数组名只能指向数组的首地址,如果有数组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”

‘捌’ C语言关于指针和数组的区别

如果硬要说的话,把数组作为参数传递的时候,会退化为指针
数组是开辟一块连续的内存空间,数组本身的标示符代表整个数组,可以用sizeof取得真实的大小;指针则是只分配一个指针大小的内存,并可把它的值指向某个有效的内存空间
然而个人感觉啊,指针和数组都是分配空间,数组是死的,容易浪费内存或者造成溢出,而指针就方便很多~而且也可以节省更多的空间,更具有效率一些~

‘玖’ c语言中数组和指针的区别与联系

数组是用指针方式实现的,但数组值是一个常量,即不能改变数组的首地址,而指针是一个变量,可以改变它的值;如:数组 a和指针p,p=a+1;是合法的,但a=a+1;是不合法的。

‘拾’ c语言 字符指针和字符数组的区别

首先第一点,非常重要的一点:指针和数组是不同的两个类型!


我们从可以从C语言标准文档中得知:

ISO/IEC 9899:1999 - programing language c

6.2.5 Types

20 .

说明了什么是指针类型。


在了解了两种类型的基础上,我们了解数组和指针的区别:

数组是一组相同类型对象的集合,指针是对一个对象的引用。


它们在使用中表现出了一定的相同点,但不同点也是很多的:

1,数组直接储存对象,指针则是指向一个对象。

2,数组名不能被赋值,指针变量能。

3,sizeof一个数组,得到数组的长度(字节单位),sizeof一个指针,相当于sizeof(void*)。(注意,不同目标平台指针长度可能不同,所以sizeof(void*)是最准确的回答)

4,(可能是考试内容,对于正确性就呵呵)指针是间接访问,数组是直接访问。


如果你对C语言有深入学习的想法,务必去了解一下C语言的ISO标准。

热点内容
linux的路径怎么写 发布:2025-01-15 17:18:49 浏览:185
php解压程序 发布:2025-01-15 17:06:22 浏览:142
刷助力脚本 发布:2025-01-15 17:02:31 浏览:520
c盘里的用户文件夹可以删除 发布:2025-01-15 16:56:45 浏览:951
虚幻4编译到哪里 发布:2025-01-15 16:50:19 浏览:756
透明度渐变android 发布:2025-01-15 16:45:08 浏览:835
dos连接oracle数据库 发布:2025-01-15 16:41:39 浏览:906
网络配置比较低怎么做 发布:2025-01-15 16:35:38 浏览:362
android弹出键盘监听 发布:2025-01-15 16:35:11 浏览:208
uz画图编程 发布:2025-01-15 16:32:44 浏览:884