关于数组
2018-04-05 12:59
76 查看
关于数组总结以下知识点 :1.数组在内存中是连续存储的2.数组的下标是从0开始的(这里一般会有数组越界的坑)3.因为数组是连续存储的,只要知道了首元素的地址,就会得到整个数组的地址.4.数组可以用指针进行访问。(对于一维数组进行指针访问)
(对于二维数组进行指针访问)
5.经典的sizeof,strlen对于sizeof:
sizeof(数组名),求取的是整个数组的空间大小,数组名表示整个数组&数组名,取出的是整个数组的地址,数组名表示整个数组的大小除此之外,数组名都表示首元素的地址。而对于有sizeof: 如果参数是数组名则求取的是数组空间大小;
如果参数是指针则求取的是存储该指针所用的空间大小(为4个字节);
如果参数是数组元素名,求取的是该元素所占空间的大小对于strlen()中的参数是一个地址类型的,从内存的某个位置(可以使字符串开头,中间某个位置,也可以是个不确定的字符串区域)开始扫描,直到碰到第一个'\0'为止,然后返回计算值(不包括'\0')。
(要特别注意'\0'),如果没有遇到'\0'是没有准确的值,返回的是随机值)
int main() { int arr[10] = { 0 }; int i = 0; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < sz; i++) { //arr[i] = i; *(arr + i) = i; //因为&arr[i]和(arr+i)的作用一样的。所以,对(arr+i)解引用就得到类似于arr[i]的作用 /*printf("&arr[%d] = %p\n", i, &arr[i]);*/ } for (i = 0; i < sz; i++) { printf("%d ", arr[i]); } return 0; }
(对于二维数组进行指针访问)
int main() { int arr[3][5] = {{1,2},{3},{4,5}}; int i = 0; int j = 0; int *p = &arr[0][0]; for(i=0; i<15; i++) { printf("%d ", *(p+i)); } return 0; }
5.经典的sizeof,strlen对于sizeof:
sizeof(数组名),求取的是整个数组的空间大小,数组名表示整个数组&数组名,取出的是整个数组的地址,数组名表示整个数组的大小除此之外,数组名都表示首元素的地址。而对于有sizeof: 如果参数是数组名则求取的是数组空间大小;
如果参数是指针则求取的是存储该指针所用的空间大小(为4个字节);
如果参数是数组元素名,求取的是该元素所占空间的大小对于strlen()中的参数是一个地址类型的,从内存的某个位置(可以使字符串开头,中间某个位置,也可以是个不确定的字符串区域)开始扫描,直到碰到第一个'\0'为止,然后返回计算值(不包括'\0')。
(要特别注意'\0'),如果没有遇到'\0'是没有准确的值,返回的是随机值)
char arr[] = "abcdef"; printf("%d\n", strlen(arr)); //6 (arr代表整个数组) printf("%d\n", strlen(arr+0)); //6 (表示从第一个元素开始扫描) printf("%d\n", strlen(*arr)); //err(strlen中的参数 是char * 类型,即参数传入的是地址类型) printf("%d\n", strlen(arr[1])); //err printf("%d\n", strlen(&arr)); //6 (整个数组的地址) printf("%d\n", strlen(&arr+1)); //随机值 printf("%d\n", strlen(&arr[0]+1));//5 (从第二个元素的位置开始扫描) printf("%d\n", sizeof(arr)); //7 (arr代表整个数组) printf("%d\n", sizeof(arr+0)); //4 (表示第一个元素的地址) printf("%d\n", sizeof(*arr)); //1 (*arr表示第一个元素) printf("%d\n", sizeof(arr[1])); //1 printf("%d\n", sizeof(&arr)); //4 (取出的是整个数组的地址,求取整个数组的地址的大小) printf("%d\n", sizeof(&arr+1)); //4 printf("%d\n", sizeof(&arr[0]+1));//4
相关文章推荐
- 关于数组的认识02 - 零基础入门学习Delphi16
- 关于vector和string优于动态分配的数组
- 关于程序执行效率(数组,list)
- 关于数组的实验
- 关于Go语言数组索引的有趣现象
- 关于数组的插入与删除以及排序
- PHP关于数组
- 关于数组的引用类型和值类型
- 关于水王的题目——找到出现次数大于/等于数组长度一半的数
- laravel5.4 关于后台数组中数据和json数据在前台的遍历输出
- 关于Java中交换数组中的两个元素的一个错误笔记
- 关于数组指针的一道面试题
- 关于数组和List之间相互转换的方法
- 关于数组名的思考
- C/C++关于字符串string、char*字符串数组与其他类型转换
- 关于Java中数组越界问题
- 关于数组长度问题你都全都掌握了吗?数组求长度练习题就在这里
- 关于 将一个数组赋值给另外一个数组会重置原来数组的指针 的问题
- 关于KSH的数组
- 深入 JAVA里面关于byte数组和String之间的转换问题