首页 > C > 字符串 阅读:57,774

程序中如何使用字符串

字符串常量可以赋值给一个字符指针或者一个字符数组,比如:

    /*1*/char *str = “this is a string”;

/*2*/char str2[]= “this is a string”;

/*3*/char str3[100] = “this is a string”;

语句1”this is a string”赋值给了字符指针str。此时,str的值为”this is a string”的第一个字符的地址。实际上,”this is a string”这个常量字符串存储在C语言程序的常量区。而str即指向了存储这个常量字符串的首地址。

语句2会将常量区中的”this is a string”拷贝到数组里面。并且数组的长度将为”this is a string” (包含’\0’)的长度。

语句3会将常量区中的”this is a string”拷贝到数组里面。并且数组的长度将为100个字节。语句3和语句2的区别是语句2没有指明数组的长度,那么数组的长度就是字符串的长度。

对于上面的3个赋值表达式,分别使用sizeofstrlen的计算结果又是什么呢?

sizeof(str) = 为指针的长度,所以在X86上是4,在X64上是8

sizeof(str2)=17str2数组的长度,但str2没有显示指出数组的长度,而是按照分配给它的字符串的长度来分配。所以,值为17

sizeof(str3)=100Sizeof计算的是str3数组的长度,所以结果为100

strlen(str)=16Strlen计算的是字符串的字符个数(不喊’\0’)。

strlen(str2)=16。原因同上。

strlen(str3)=16。原因同上。

当然,也可以把字符串存放在动态分配的内存空间中。比如:

char *p = (char *)malloc(100);

if (p == NULL)

         return;

memset(p, 0, 100);

strcpy(p, “hello world”);

这样,以p为首地址的内存中将存放着”hello world”这个字符串。

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注