sizeof && strlen, 数组 && 指针
2012-10-30 10:27
253 查看
贴代码吧,最明显了:
比较:
而如果一个一个指定数组的各个值,就不会自动出现\0了。
sizeof:
sizeof(数组名),指的是数组占据的物理空间;sizeof(指针变量),结果均是4.
strlen(数组名)和strlen(指针变量)结果均是字符串的长度,不包括结尾的\0字符。
又如:
#include <stdio.h> #include <string.h> int main() { char s[] = "hello"; char *p = s; printf("sizeof(s)=%d,sizeof(p)=%d\n",sizeof(s),sizeof(p)); //6,4 printf("strlen(s)=%d,strlen(p)=%d",strlen(s),strlen(p)); //5,5 system("pause"); return 0; }
比较:
#include <stdio.h> #include <string.h> int main() { char s[] = {'h', 'e','l'}; char *p = s; printf("sizeof(s)=%d,sizeof(p)=%d\n",sizeof(s),sizeof(p)); //3,4 printf("strlen(s)=%d,strlen(p)=%d",strlen(s),strlen(p)); //3,3 system("pause"); return 0; }在将字符串以数组的形式存储的时候,会自动在最后加一个\0字符,所以sizeof = strlen + 1.
而如果一个一个指定数组的各个值,就不会自动出现\0了。
sizeof:
sizeof(数组名),指的是数组占据的物理空间;sizeof(指针变量),结果均是4.
strlen(数组名)和strlen(指针变量)结果均是字符串的长度,不包括结尾的\0字符。
又如:
#include <stdio.h> #include <string.h> int main() { int s[] = {1,2,3}; int *p = s; printf("sizeof(s)=%d,sizeof(p)=%d\n",sizeof(s),sizeof(p)); //12,4 // printf("strlen(s)=%d,strlen(p)=%d",strlen(s),strlen(p)); //5,5 system("pause"); return 0; }
相关文章推荐
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- [cpp] 字符数组,字符指针,sizeof,strlen总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- C和指针之数组名和&数组名和&首元素以及sizeof(数组名)和sizeof(数组名作为参数)区别
- 解析sizeof, strlen, 指针以及数组作为函数参数的应用
- 字符数组,字符指针,sizeof,strlen总结
- 一维数组 与指针 sizeof strlen int char
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- C数组名与指针,sizeof与strlen,free与delete区别,野指针,编译过程简介
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 字符数组和指针的sizeof(),strlen()以及getline()
- 【c语言】strlen与sizeof对数组和指针的求法
- 字符数组,字符指针,sizeof,strlen总结
- 堆和栈的区别&字符数组,字符指针,sizeof的总结(转)
- 字符数组,字符指针,sizeof,strlen总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结