尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

C语言中字符数组的初始化与赋值

C语言中字符数组的初始化与赋值 1.字符数组初始化在C语言中字符串是当做字符数组来处理的所以字符串有两种声明方式一种是字符数组一种是字符指针。char parr[] zifuchuanshuzu; char charr[] { z,i,f,u,c,h,u,a,n,s,h,u,z,u };这是字符数组初始化的两种方式但是这两种方式其实是不等价的他们的数组长度不同。#include int main() { char parr[] zifuchuanshuzu; //与charr[]不等价 char charr[] { z,i,f,u,c,h,u,a,n,s,h,u,z,u }; //等价于charr[] char charr_test[] { z,i,f,u,c,h,u,a,n,s,h,u,z,u ,\0}; int num_parr sizeof(parr); int num_charr sizeof(charr); int num_charr_test sizeof(charr_test); printf(The parr[] is : %s\n, parr); printf(The size of parr[] is : %d\n\n, num_parr); //与charr[]不等价 printf(The charr[] is : %s\n, charr); printf(The size of charr[] is : %d\n\n, num_charr); //等价于charr[] printf(The charr_test[] is : %s\n, charr_test); printf(The size of charr_test[] is : %d\n, num_charr_test); return 0; }运行结果如图从结果可以看到第二种初始化方式打印的结果有问题但是字符数量没有问题。这是因为字符串默认是以’\0’结束的第二种初始化方式中没有’\0’,而我们以字符串方式打印所以出错第一种第一方式是系统自动添加了’\0’;我们可以看到其字符数量是15与第三种相同。下面的初始化方式是错误的char parr[15]; parr[]zifuchuanshuzu;错误的原因C语言并没有提供可以直接操作字符串的运算符“”可以用于其他数据类型的赋值但是不可以直接给字符串赋值。char *strcpy(char *dest,const char*src);头文件string.h和stdio.h功能将src地址开始且包含’\0’结束符的字符串复制到以dest开始的空间。注字符数组dest必须是数组名形式src可以是数组名也可以是字符串常量可以用strcpy将src的前若干个字符复制到字符数组中char *strcat(char *dest,const char *src);头文件string.h功能把src中的内容复制到dest结尾处(覆盖’\0’)。注src和dest内存区域不可以重叠dest必须有足够的空间来容纳src字符数组dest必须是数组名形式src可以是数组名也可以是字符串常量返回指向dest的指针#include #include int main() { //利用strcpy为字符数组赋值 char parr[40]; strcpy(parr,zifuchuanshuzu); printf(The parr[] is : %s\n\n, parr); //赋值字符串的一部分 char charr[] _test_strcat_redundance; char tarr[13]; charr[12] \0;//复制charr的前12个字符 strcpy(tarr, charr); printf(The tarr[] is : %s\n\n, tarr); //字符串链接 strcat(parr, charr); printf(The parr and tarr[] is : %s\n, parr); return 0; }结果2.字符指针在C语言中我们也可以使用字符指针来存储字符串。char* strzifuchuanshuzu;C语言对字符串常量是按照字符数组来处理的在内存中开辟了一个字符数组用来存放字符串常量程序在定义字符串指针变量str时只是把字符串首地址赋值给str。输出printf(%s\n,str);系统首先输出str指向的字符而后自加1直至遇到’\0’;与数组的输出方式相同。char *str; strzifuzhizhen;对于字符指针这种赋值方式是正确的。与字符数组不同。3.总结 以上是个人理解有错误的地方欢迎指正。
返回列表