数组运算重点总结


首先说明数组只能存放同一种数据类型,对于数组求长度可以用int length=sizeof(arr)/sizeof(arr[0]),数组从下标0开始访问的;

1.      一维数组的创建

 []中要给一个常量才行,不能使用变量。在创建数组时,如果不想说明大小就得初始化;接下来我们来讨论内存中如何分配:对于char arr1[]=”a,b,c”中存储时默认在后面还有一个’/0’,对于有{‘a’,’b’,’c’},默认没有’/0’;对于*p=”aabc”其中p存放了数组首元素的地址。

*数组在内存中的存储

数组在内存中连续存储。

2.      一维数组的指针访问

看代码:

#include<stdio.h>

int main()

{int arr={1,2,3,4}

printf(“%p”,arr);

printf(“%d”,*arr);

 

}

这个代码可以说明数组的数组名其实是首元素的地址

用指针访问其实就是指针指向数组名+整数,就可以得到每个元素的地址。

3.      二维数组在内存中的存储

二维数组也是连续存储

其实对于intarr[3][4]的数组来说,在内存中是一行紧挨一行的存储,

4.      二维数组的指针访问:数组运算

一维数组

#include<stdio.h>

int main()

{

int a[]={1,2,3,4};

printf(“%d”,sizeof(a));//整个数组的大小16

printf(“%d”,sizeof(a+0));//首元素地址 4

printf(“%d”,sizeof(*a)); //首元素a大小4

printf(“%d”,sizeof(a+1));//第二个元素地址大小4

printf(“%d”,sizeof(a[1]));//数组第二个元素大小4

printf(“%d”,sizeof(&a));//首地址大小4

printf(“%d”,sizeof(&a+1))//;下一个数组大小4

printf(“%d”,sizeof(&a[0]))//;a首元素大小4

printf(“%d”,sizeof(&a[0]+1));//第二个 4

return 0;}

 

sizeof()计算的是数组的长度

strlen计算的是字符串的长度

注意:当数组作为函数参数传递时,数组名时数组首元素的地址,故无法使用以上两个,所以在传址时,应该提供数组名,数组元素个数。

字符数组

#include<stdio.h>

int main()

{

char arr[]={‘a’,’b’,’c’,’d’,’e’,’f’};

printf(“%d\n”,sizeof(arr));//整个数组大小6

printf(“%d\n”,sizeof(arr+0)); //首元素地址4

printf(“%d\n”,sizeof(*arr));//首元素大小1

printf(“%d\n”,sizeof(arr[1]));//数组b大小1

printf(“%d\n”,sizeof(&arr));首元素地址4

printf(“%d\n”,sizeof(&arr+1));下个数组大小4

return 0;}

 

Strlen()大小的运算

不包括’/0’,计算从指定位置知道’/0’

#include<stdio.h>

int main()

{printf(“%d/n”,strlen(arr));//该数组不包括’\0’故结果为随机值

printf(“%d/n”,strlen(arr+0));//随机值

printf(“%d/n”,strlen(*arr));//’a’的地址为97,未知地址,题目错误

printf(“%d/n”,strlen(arr[1]));//’b’的地址未知,题目错误。

 

return 0;}

 

指针数组相关计算

#include<stdio.h>

int main()

{char *p=''abcdef';

printf("%d/n",sizeof(p));//p存放元素a的地址 4

数组重要点总结

首先说明数组只能存放同一种数据类型,对于数组求长度可以用int length=sizeof(arr)/sizeof(arr[0]),数组从下标0开始访问的;

1.      一维数组的创建

 []中要给一个常量才行,不能使用变量。在创建数组时,如果不想说明大小就得初始化;接下来我们来讨论内存中如何分配:对于char arr1[]=”a,b,c”中存储时默认在后面还有一个’/0’,对于有{‘a’,’b’,’c’},默认没有’/0’;对于*p=”aabc”其中p存放了数组首元素的地址。

2,数组在内存中的存储

数组在内存中连续存储。

2.      一维数组的指针访问

看代码:

#include<stdio.h>

Int main()

{int arr={1,2,3,4}

Printf(“%P”,arr);

Printf(“%d”,*arr);

 

}

这个代码可以说明数组的数组名其实是首元素的地址

用指针访问其实就是指针指向数组名+整数,就可以得到每个元素的地址。

3.      二维数组在内存中的存储

二维数组也是连续存储

其实对于intarr[3][4]的数组来说,在内存中是一行紧挨一行的存储,

4.  数组运算


#include<stdio.h>

Int main()

{

int a[]={1,2,3,4};

printf(“%d”,sizeof(a));//整个数组的大小16

printf(“%d”,sizeof(a+0));//首元素地址 4

printf(“%d”,sizeof(*a)); //首元素a大小4

printf(“%d”,sizeof(a+1));//第二个元素地址大小4

printf(“%d”,sizeof(a[1]));//数组第二个元素大小4

printf(“%d”,sizeof(&a));//首地址大小4

printf(“%d”,sizeof(&a+1))//;下一个数组大小4

printf(“%d”,sizeof(&a[0]))//;a首元素大小4

printf(“%d”,sizeof(&a[0]+1));//第二个 4

return 0;}

 

sizeof()计算的是数组的长度

strlen计算的是字符串的长度

注意:当数组作为函数参数传递时,数组名时数组首元素的地址,故无法使用以上两个,所以在传址时,应该提供数组名,数组元素个数。

字符数组

#include<stdio.h>

Int main()

{

char arr[]={‘a’,’b’,’c’,’d’,’e’,’f’};

printf(“%d\n”,sizeof(arr));//整个数组大小6

printf(“%d\n”,sizeof(arr+0)); //首元素地址4

printf(“%d\n”,sizeof(*arr));//首元素大小1

printf(“%d\n”,sizeof(arr[1]));//数组b大小1

printf(“%d\n”,sizeof(&arr));首元素地址4

printf(“%d\n”,sizeof(&arr+1));下个数组大小4

return 0;}

 

Strlen()大小的运算

不包括’/0’,计算从指定位置知道’/0’

#include<stdio.h>

int main()

{printf(“%d/n”,strlen(arr));//该数组不包括’\0’故结果为随机值

printf(“%d/n”,strlen(arr+0));//随机值

printf(“%d/n”,strlen(*arr));//’a’的地址为97,未知地址,题目错误

printf(“%d/n”,strlen(arr[1]));//’b’的地址未知,题目错误。

 

return 0;}

 

指针数组相关计算

 

 

#include<stdio.h>

int main()

{char *p=”abcdef”;

printf(“%d\n”,sizeof(p));//p存放首元素地址 4

printf(“%d\n”,sizeof(p+1));//b的地址 4

printf(“%d\n”,sizeof(*p));//首元素大小1

printf(“%d\n”,sizeof(p[0]));//首元素大小1

printf(“%d\n”,sizeof(&p));//字符指针指针变量p的地址大小,结果为4

printf(“%d\n”,sizeof(&p+1));//4

printf(“%d\n”,strlen(p));//从a的地址找,直到’\0’ .6

return 0;

}

 

 

 

 

 

 


}

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值