一些简单的数组运算
2017-04-09 22:53
162 查看
char arr[] = "abcdef";//7
printf("%d\n", sizeof(arr));//7
printf("%d\n", sizeof(arr+0));//4
printf("%d\n", sizeof(*arr));//1
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
printf("%d\n", strlen(arr));//6
printf("%d\n", strlen(arr+0));//6
printf("%d\n", strlen(*arr));//X
printf("%d\n", strlen(arr[1]));//X
printf("%d\n", strlen(&arr));//6
printf("%d\n", strlen(&arr+1));//随机值
printf("%d\n", strlen(&arr[0]+1));//5
数组名在C语言中只有在单独放在sizeof里以及&数组名时,代表整个地址,例如(sizeof(arr) &arr),其他时间都代表的是数组首元素的地址,如(sizeof(arr+1) strlen(arr))
而strlen函数是用来计算字符串长度的,它的原理是从参数的地址开始,到它地址之后的第一个'\0'为止。
搞清楚这两个点。相信在做上边的题应该没有任何难度了。
printf("%d\n", sizeof(arr));//7
printf("%d\n", sizeof(arr+0));//4
printf("%d\n", sizeof(*arr));//1
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
printf("%d\n", strlen(arr));//6
printf("%d\n", strlen(arr+0));//6
printf("%d\n", strlen(*arr));//X
printf("%d\n", strlen(arr[1]));//X
printf("%d\n", strlen(&arr));//6
printf("%d\n", strlen(&arr+1));//随机值
printf("%d\n", strlen(&arr[0]+1));//5
数组名在C语言中只有在单独放在sizeof里以及&数组名时,代表整个地址,例如(sizeof(arr) &arr),其他时间都代表的是数组首元素的地址,如(sizeof(arr+1) strlen(arr))
而strlen函数是用来计算字符串长度的,它的原理是从参数的地址开始,到它地址之后的第一个'\0'为止。
搞清楚这两个点。相信在做上边的题应该没有任何难度了。
相关文章推荐
- 数组的一些简单运算
- js中用数组对一些验证进行简单的封装
- 用linq对数组排序及简单运算
- C中数组以及数组相关的简单运算
- javascript中一些数组函数的简单归纳
- C语言数组的一些运算*a,a+1,&a+1,a+0
- C的一些简单习题(13)--数组a中n个整数按相反顺序存放
- 关于java语言数组的一些简单用法
- 对kmp算法next数组的一些简单理解
- 用C++实现简单地多项式运算。(因为是菜鸟,会有一些漏洞)
- 给JavaScript的数组扩展一些简单数学方法
- 用linq对数组排序及简单运算
- <Power Shell>01 四则运算和数组简单使用
- 透过Javascript一些变量定义及简单运算实验看JS内部运行机制
- JS数据处理[对json数据的一些简单处理转为数组或者键值对]
- 数组的一些简单知识
- 关于数组的一些简单操作
- cuda 简单数组运算
- web.一些简单的数组操作
- 数组及数组名地址,常量地址等一些简单的研究