关于字符串、数组的strlen()和sizeof()
2010-10-04 20:34
351 查看
/**
sizeof返回数组的内存分配大小,而strlen返回数组中 已存放 的字符串的内存分配大小,非整个数组的内存分配大小
**/
#include<stdio.h>
#include<string.h>
int main()
{ //sizeof strlen
char str[] = "abc"; // 4 3 ,'\0'占据一个字节
// char str1[3] = "abc"; //
char str2[4] = "abc"; // 4 3
char str3[5] = "abc"; // 5 3
char str4[] = {'a','b','c'}; // 3 7 ?
char str51[3] = {'a','b','c'}; // 3 11 ?没有溢出但strlen这么诡异?
// char str52[2] = {'a','b','c'}; // too many initializers
char str6[5] = {'a','b','c'}; // 5 3
char str71[] = {'a','b','c','\0'}; // 4 3,为分配指定大小,但默认'\0'为结束符,sizeof返回4
char str72[] = {'a','b','c','\0','d'}; // 5 3,sizeof返回数组所分配空间的大小,strlenstrlen统计到'\0'结束故为3
char str8[7] = {'a','b','c','\0','d'}; // 7 3,虽'\0'为第四个字符,但已为其分配大小为7的空间,故sizeof返回7,strlen统计到'\0'结束故为3
char * str9 ="abc"; // 4 3
// char * str10 = {'a','b','c','\0'};//cannot convert from 'const char' to 'char *'
printf("sizeof str: %d\n",sizeof(str));
// printf("sizeof str1: %d\n",sizeof(str1));
printf("sizeof str2: %d\n",sizeof(str2));
printf("sizeof str3: %d\n",sizeof(str3));
printf("sizeof str4: %d\n",sizeof(str4));
printf("sizeof str51: %d\n",sizeof(str51));
// printf("sizeof str52: %d\n",sizeof(str52));
printf("sizeof str6: %d\n",sizeof(str6));
printf("sizeof str71: %d\n",sizeof(str71));
printf("sizeof str72: %d\n",sizeof(str72));
printf("sizeof str8: %d\n",sizeof(str8));
printf("sizeof str9: %d\n",sizeof(str9));
printf("\n");
printf("strlen str: %d\n",strlen(str));
// printf("strlen str1: %d\n",strlen(str1));
printf("strlen str2: %d\n",strlen(str2));
printf("strlen str3: %d\n",strlen(str3));
printf("strlen str4: %d\n",strlen(str4));
printf("strlen str51: %d\n",strlen(str51));
// printf("strlen str52: %d\n",strlen(str52));
printf("strlen str6: %d\n",strlen(str6));
printf("strlen str71: %d\n",strlen(str71));
printf("strlen str72: %d\n",strlen(str72));
printf("strlen str8: %d\n",strlen(str8));
printf("strlen str9: %d\n",strlen(str9));
return 1;
}
sizeof返回数组的内存分配大小,而strlen返回数组中 已存放 的字符串的内存分配大小,非整个数组的内存分配大小
**/
#include<stdio.h>
#include<string.h>
int main()
{ //sizeof strlen
char str[] = "abc"; // 4 3 ,'\0'占据一个字节
// char str1[3] = "abc"; //
char str2[4] = "abc"; // 4 3
char str3[5] = "abc"; // 5 3
char str4[] = {'a','b','c'}; // 3 7 ?
char str51[3] = {'a','b','c'}; // 3 11 ?没有溢出但strlen这么诡异?
// char str52[2] = {'a','b','c'}; // too many initializers
char str6[5] = {'a','b','c'}; // 5 3
char str71[] = {'a','b','c','\0'}; // 4 3,为分配指定大小,但默认'\0'为结束符,sizeof返回4
char str72[] = {'a','b','c','\0','d'}; // 5 3,sizeof返回数组所分配空间的大小,strlenstrlen统计到'\0'结束故为3
char str8[7] = {'a','b','c','\0','d'}; // 7 3,虽'\0'为第四个字符,但已为其分配大小为7的空间,故sizeof返回7,strlen统计到'\0'结束故为3
char * str9 ="abc"; // 4 3
// char * str10 = {'a','b','c','\0'};//cannot convert from 'const char' to 'char *'
printf("sizeof str: %d\n",sizeof(str));
// printf("sizeof str1: %d\n",sizeof(str1));
printf("sizeof str2: %d\n",sizeof(str2));
printf("sizeof str3: %d\n",sizeof(str3));
printf("sizeof str4: %d\n",sizeof(str4));
printf("sizeof str51: %d\n",sizeof(str51));
// printf("sizeof str52: %d\n",sizeof(str52));
printf("sizeof str6: %d\n",sizeof(str6));
printf("sizeof str71: %d\n",sizeof(str71));
printf("sizeof str72: %d\n",sizeof(str72));
printf("sizeof str8: %d\n",sizeof(str8));
printf("sizeof str9: %d\n",sizeof(str9));
printf("\n");
printf("strlen str: %d\n",strlen(str));
// printf("strlen str1: %d\n",strlen(str1));
printf("strlen str2: %d\n",strlen(str2));
printf("strlen str3: %d\n",strlen(str3));
printf("strlen str4: %d\n",strlen(str4));
printf("strlen str51: %d\n",strlen(str51));
// printf("strlen str52: %d\n",strlen(str52));
printf("strlen str6: %d\n",strlen(str6));
printf("strlen str71: %d\n",strlen(str71));
printf("strlen str72: %d\n",strlen(str72));
printf("strlen str8: %d\n",strlen(str8));
printf("strlen str9: %d\n",strlen(str9));
return 1;
}
相关文章推荐
- 补补基础知识,关于字符串,字符数组,CString型字符串,strlen,sizeof
- 关于数组中的sizeof和strlen
- 数组与字符串长度sizeof()、strlen()、string的length()和size()
- C中 字符数组和字符串以及strlen 和sizeof
- 数组与字符串长度sizeof()、strlen()、string的length()和size()
- C++11 基础之字符数组,字符串,字符指针通过sizeof、strlen求值
- 关于数组,sizeof(),strlen的计算问题
- 关于sizeof与strlen在字符串应用的区别
- sizeof、strlen、字符串、数组,整到一块,你还清楚吗?
- 发现关于数组求其长度 strlen 和 sizeof的问题
- C/C++中字符串数组及strlen()和sizeof()区别
- 字符串,字符指针和字符数组的sizeof和strlen
- 关于数组名在sizeof内部和在strlen内部
- sizeof与strlen使用,字符串指针数组
- C基础 对字符串数组的sizeof和strlen的区别
- 计算字符串的长度及sizeof与strlen、gets与scanf、字符数组与字符串
- C++ 数组与字符串长度sizeof()、strlen()、string的length()和size()
- iOS开发 ----- 关于char *的赋值和字符串之间的复制问题以及sizeof strlen
- 数组与字符串长度sizeof()、strlen()、string的length()和size()
- 数组与字符串长度sizeof()、strlen()、string的length()和size()