头部左侧文字
头部右侧文字
当前位置:网站首页 > 资讯 > 正文

c语言数组名给指针,c 数组 指针

作者:admin日期:2024-02-18 21:30:19浏览:38分类:资讯

C语言中数组能否当指针使用

1、可以 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。

2、不可以,因为w这时还是野指针。只有这样 int *w,a[44];w=a;操作后才可以,操作w就与操作a一样了。而且,操作指针比直接操作数组名更方便,因为指针是变量,可以++、--,而数组名是常量,不能++、--。

3、函数的返回值“绝不能”是函数数组,而只能是指向数组或函数的指针。有些人喜欢理解为:除数组和函数之外所有C语言参数在默认情况下都是传值调用,数组和函数都是传址调用。

为什么不能把二维数组名/行的首地址赋给指针?

1、所以你要定义指针去用二维数组名赋值,需要定义指针int (*k)[7];不是int *k。或者你把二维数组当成一维数组来看(二维内部地址是连续的,和一维一样),这样int *k;k=&d[0][0];之后通过k++遍历二维数组所有值。

2、= b呢,这是因为数组退化到指针,只有第一维的数组可以不确定数组长度,可以直接作为首地址。有“数组名能否作为右值”的讨论。

3、而int (*pa)[5]定义了一个指向5个元素的int数组的指针,而a只是数组的首地址,&a才是数组的指针,同样也是因为类型不匹配。

C语言中二维数组名能否直接赋给指针变量

这样是不行的。二维数组的指针必须限定第一维的大小。所以:int (*ppr)[3];ppr = fool;这样才可以。

b呢,这是因为数组退化到指针,只有第一维的数组可以不确定数组长度,可以直接作为首地址。有“数组名能否作为右值”的讨论。

所以直接把二维数组名赋给一个普通的指针变量,这个指针是指向元素aa[0]的,但实际上呢,aa[0]不是一个具体的元素,而是元素aa[0][0]的地址;所以只有把数组名赋给二级指针它才指向一个具体的元素。

C语言可以把指针和数组名之间相互赋值吗?

可以的,数组名就是数组第一个元素的指针,所以可以赋值给相同类型的指针变量,此时,数组名和这个指针都指向这个数组的开头。

同类型指针变量可以相互赋值,数组不行,只能一个一个元素的赋值或拷贝 存储方式 数组:数组在内存中是连续存放的,开辟一块连续的内存空间。

C语言中,数组间不能相互赋值——这是历史遗留问题,当年在B语言中,数组名和指针名是没有区别的(除了数组名定义时自动为数组分配内存),数组名可以指向别的对象或数组。换句话说,数组名之间的赋值是浅赋值。

可以。指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。

是不能修改的。void fun(char a[]){} void main(){ char *p = 123;fun(p);} 数组作为函数参数的时候,是可以把指针变量赋值给它的,这时数组名就可以看作一般的指针变量了。简单的说就是这样。

暂无评论,来添加一个吧。

取消回复欢迎 发表评论: