详细指针(2)

文章讲述了数组名的理解,区分首元素地址与数组大小的计算,以及指针在数组操作中的作用,包括指针作为数组、二级指针和指针数组的应用。通过冒泡排序示例,说明了数组和指针本质的关联。
摘要由CSDN通过智能技术生成

一,数组名的理解及指针

数组的数组名,是首元素的地址。

但是,有两个例外:

(1),sizeof(数组名):这里表示整个数组,计算的是整个数组的大小,单位是字节。

(2),&数组名:这里的数组名表示整个数组,取出的是整个数组的地址。(整个数组的地址与首元素的地址是有区别的)

除了(1)(2)其他都表示首元素地址。

前四个数组名是首元素的地址,类型是int*,+1就是跳过一个字节。

用指针输入数组:

eg:

其中,*(p+i)= p[i] = arr[i] = *(ar + i)    arr[i](*(arr+i))=i[arr](*(i+arr))

(1)数组就是数组,是一块连续的空间。(数组的大小和数组元素个数元素类型都有关系)

(2)指针变量就是指针变量,是一个变量。(2/ 8个字节)

(3)数组名是一个地址,首元素地址。

(4)可用指针来访问数组。

这里错误的原因是因为,arr是数组名是首元素的地址并且数组在传参时候,形参可以写成数组的形式,但是本质还是指针,因此在sizeof(arr)/ sizeof(arr[0])这里得不到元素的个数。

注:(1)数组传参的本质是传递了数组首元素的地址,所以形参访问的数组和实参访问的数组是同一个数组。

(2)形参的数组时不会单独再创造数组空间,所以形参的数组是可以忽略数组的大小。

所以正确的是

由此我们可以写一个冒泡排序;

二,二级指针

这里int* *p(*p表示指针变量,int**表示几级指针类型)

三,指针数组

如图可知,指针数组强调的是数组。

可用指针数组模拟二维数组:

为了更好地理解,可以看下面图示

本质还是指针的运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值