2016 - 2024

感恩一路有你

用指针取二维数组的值 C语言指针和数组结合起来该怎么学?

浏览量:3174 时间:2023-06-15 13:37:42 作者:采采

C语言指针和数组结合起来该怎么学?

我用C语言开发十几年了,经常看到一些新手对指针和数组很迷茫。

排列

首先是array,一个数组声明后就有内存了,比如char a[10],那么数组A就有10个字节的内存。

所以可以带下标使用,只要下标不超过10-1,就不会出错。

如果你把数组想象成一串粘在一起的盒子,指针就是一个钩子。钩子被钩住的时候只能用一块内存。比如声明一个指针p: char * p,这时可以 不要用它。只有在P挂接一块内存后,也就是赋值后,才能使用。比如p a或者p ampa[0]。

注意

指针本身也有内存,比如int b,其中b取4个字节,那么char *p,p的类型是char *,所以p本身也取4个字节。也可以取它的地址,也就是二级指针:char **pp p。

数组本身也可以看作是指向一块内存的指针,指针就是数组名。比如上面的一个。您可以将a分配给p: p a。更常见的情况是,当调用函数时。比如有一个排序函数:qsort(char *p,int n),需要一个数组和数组中的元素个数作为参数。可以这样调用:qsort(a,10)。

欢迎讨论关注我的头条号。

指向整型数组的指针如何用?

数组指针(也称为行指针)

定义int (*p)[10]

()具有高优先级。首先,它意味着P是一个指向整数一维数组的指针。这个一维数组的长度是10,也可以说是P的步长,也就是说当执行p 1时,P会跨越10个整数数据的长度。

示例:

Int (*p)[4] //这个语句定义了一个数组指针,指向一个有四个元素的一维数组。

所以数组指针也叫一维数组指针,也叫行指针。

点阵

定义int *p[n]

[]具有高优先级。先和P组合成一个数组,然后int*显示这是一个整数指针数组,有n个指针类型数组元素。这里执行p 1,那么p指向下一个数组元素,所以赋值是错误的:pa;因为P是不可知的表示,所以只有p[0],p[1],p[2]...p[n-1],它们是指针变量,可以用来存储变量地址。但也可以是这样的*pa其中*p代表指针数组第一个元素的值和a的第一个地址的值。

将二维数组赋给指针数组:。

int *p[3]

int a[3][4]

P //这个语句表示p数组指向下一个数组元素。注意:这个数组的每个元素都是一个指针。

对于(i0ilt3i)

p[i]a[i]

此处int*p[3]表示一维数组中有三个指针变量,分别是p[0]、p[1]和p[2]。

所以要分别赋值。

这样,两者的区别就清楚了。数组指针只是一个指针变量,在C语言中似乎是专门用来指向二维数组的,它占用了内存中一个指针的存储空间。指针数组是多个指针变量,以数组的形式存在于内存中,占用多个指针的存储空间。

C语言30天核心突破

指针 内存 元素

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。