数组运算重点总结
2017-10-31 14:26
183 查看
首先说明数组只能存放同一种数据类型,对于数组求长度可以用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”
9271
,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;
}
}
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”
9271
,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;
}
}
相关文章推荐
- 01背包问题 总结关于为什么01背包优化成1维数组后,内层循环是逆序的?
- JavaScrip数组删除特定元素的几种方法总结
- 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组
- 位运算的常用操作总结
- java零碎知识点总结 1:数组的长度
- 数组在类中的运算
- 20162311 结对编程项目-四则运算 整体总结
- 20162317-20162315结对编程(四则运算)第二周阶段总结
- 结构体重点总结
- C语言_数组初识总结
- 全面总结Javascript对数组对象的各种操作
- Exchange server 2007重点配置总结
- C++中的位运算总结
- 黑马程序员-有关数组的总结
- C++的数组、结构体、指针三种复合类型知识点小总结
- python中矩阵运算总结
- C语言变长数组data[0]【总结】
- VS_C_17/12/12 C中数组与宏和const以及typedef的总结
- js数组中的常用方法总结
- JavaScript中清空数组的方法总结