一文搞定指针与数组的运算

本文详细解析了C语言中指针与数组的运算,包括必备知识如sizeof运算符的应用,字符串的结束符'',二维数组的概念。还深入探讨了简单数组、字符数组、字符串数组的运算,以及字符串指针和二维数组的处理。通过学习,读者能全面掌握指针与数组之间的互动操作。
摘要由CSDN通过智能技术生成

1.必备知识

要搞彻底指针和数组的各种运算,必须了解以下知识点:

sizeof里的数组名代表整个数组

若有数组arr[]={1,2,3,4};sizeof(arr)里面的数组名代表整个数组,换句话说就是当数组名单独出现在sizeof()中时,数组名只表示整个数组,&arr,这里的数组名也代表整个数组,除这两种方式的其余形式数组名均代表首元素地址。
地址的字节大小为4。

字符串隐藏一个结束符 ‘\0’

strlen()函数遇到字符里面的\0才结束统计,()里面的参数为地址,不为地址就会显示错误。
整个数组的地址就是数组首元素的地址。
char[]=“abcdef”;其中包含隐藏的\0。
若有char *p = “abcdef”;则p指向字符串所在的内存单元,指针P和字符串占不同的内存单元。如下图:

这里写图片描述

二维数组可以看作一维数组

对于二维数组,谈到它的首元素时要将其转化成一维数组,例如arr[3][4],将arr[0],arr[1],arr[2]看作一维数组名。
如下图:

这里写图片描述

如果你知道了这些知识点,那下面的题就好办了

2.简单数组运算

//只要sizeof()中单独放a,就表示整个数组,其余都表示首元素地址
//地址的字节大小为4
int a[] = {
    1, 2, 3, 4 };
printf("%d\n", sizeof(a));// 16  代表整个数组
printf("%d\n", sizeof(a + 0));// 4  代表首元素地址(地址的字节大小)
printf("%d\n", sizeof(*a));// 4  代表首元素的值(sizeof(1))    *a = *(a+0) = a[0]
printf("%d\n", sizeof(a + 1));// 4  第二个元素的地址
printf("%d\n", sizeof(a[1]));// 4  代表第二个元素的值
printf("%d\n", sizeof(&a));// 4  代表整个数组的地址(数组的地址字节大小)
printf("%d\n", sizeof(*&a));// 4  整个数组的值   *代表解引用
printf("%d\n", sizeof(&a + 1));// 4  这首先代表一个地址  代表整个数组后面的地址
printf("%d\n", sizeof(&a[0]));// 4  代表首元素的地址
printf("%d\n", sizeof(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值