字符串的定义及存储大小

字符串的定义及存储大小

  • 1.常用定义方式
  • 2.字符串的存储方式
  • 3.字符串长度计算

1.常用定义方式

	int i;
	int a[3]={1,2,3};					//整型数据定义 
	//第一种定义方式,和整型数据类似    有点幼稚!! 
	char str1[5]={'a','b','c','d','e'};	//字符数组的定义 
	for(i=0;i<sizeof(str1)/sizeof(str1[0]);i++)	//遍历数组 
		printf(" %c ",str1[i]);
	putchar('\n');   
	
	//第二种定义方式,和整型数据类似,比方式一高级一点 
	char str2[5]="abcde";
	for(i=0;i<sizeof(str2)/sizeof(str2[0]);i++)
		printf(" %c ",str2[i]);
	putchar('\n');
	
	//第三种定义方式,字符大小由字符串决定,不由自己分配   
	char str3[]="abcdefghijk";		//数组元素个数不写,根据实际大小默认分配 
	for(i=0;i<sizeof(str3)/sizeof(str3[0]);i++)
		printf(" %c ",str3[i]);
	putchar('\n');
	
	//第四种定义方式,数组名就是地址(大多数情况下) 
	char *str4="abcdefg";		//操作不当,非法内存访问,易造成段错误 
	printf("%s\n",str4);

2.字符串的存储方式

字符串的存储方式,字符串在内存中,除了有效的字符以外,还会自动在后面补一个’\0’,作为字符串结束标志。

	//整型数组知识点回顾	
	int a[]={1,2,4};				//连续的空间 
	printf("\n*********1.整型数组**********\n");
    printf("a数组大小:%d\n",sizeof(a));
    printf("a数组元素大小:%d\n",sizeof(a[0]));
    printf("a数组个数:%d\n",sizeof(a)/sizeof(a[0]));
    
    printf("\n*********2.字符数组**********\n");
	char b[]={'a','b','c'};
    printf("b数组大小:%d\n",sizeof(b));
    printf("b数组元素大小:%d\n",sizeof(b[0]));
    printf("b数组个数:%d\n",sizeof(b)/sizeof(b[0]));
    
    printf("\n*********3**********\n");
	char c[3]="abc";
    printf("c数组大小:%d\n",sizeof(c));
    printf("c数组元素大小:%d\n",sizeof(c[0]));
    printf("c数组个数:%d\n",sizeof(c)/sizeof(c[0]));
    
    //不写数组大小,根根据数组的初始化的时候元素个数来确定 
    printf("\n*********4**********\n");
	char d[]="abc";					//4个字符,多了'\0',代表字符串结束标志
    printf("d数组大小:%d\n",sizeof(d));
    printf("d数组元素大小:%d\n",sizeof(d[0]));
    printf("d数组个数:%d\n",sizeof(d)/sizeof(d[0]));
    //d[3]='a';
    printf("%s\n",d);
	
	//%s输出方模式 
    int i=0;
    while(d[i]!='\0')
    {
		printf("%c",d[i++]);
        //i++;
    }

3.字符串长度计算

真正计算字符串有效字符长度用 strlen

    //不能用sizeof计算字符串中有效字符个数!!应该要用strlen,它在就算字符串大小的时候,遇到'\0'结束计算    hello'\0''\0'... 
	int a[]={1,2,3};
    printf("a数组个数:%d\n",sizeof(a)/sizeof(a[0]));
     
    char a2[128]="hello";
    printf("a2数组个数:%d\n",sizeof(a2)/sizeof(a2[0]));
     
    printf("a2数组的真实字符串真实个数:%d\n",strlen(a2)); 

你可能感兴趣的:(C语言,c语言)