怎么给数组赋值字符串的值

后端 (50) 2023-11-21 14:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说怎么给数组赋值字符串的值,希望能够帮助你!!!。

1、字符指针

字符串赋值给字符指针变量时,可以在定义的时候就初始化,也可以先定义,再赋值。

怎么给数组赋值字符串的值_https://bianchenghao6.com/blog_后端_第1张

2、字符数组

但字符串赋值给字符数组时,可以在定义的时候就初始化,但不可以像字符指针那样先定义,后面再赋值。

怎么给数组赋值字符串的值_https://bianchenghao6.com/blog_后端_第2张

为了搞明白如何用字符串赋值,首先要搞清楚双引号""的作用

  • 在内存的常量区申请空间,存放字符串;
  • 在字符串末尾增加'\0';
  • 返回该内存空间的地址。

所以,当字符串常量"hello","world"出现在表达式中时,其值是这些字符所存储的地址(在常量区),而不是这些字符本身。

因此,可以把字符串赋值给字符指针变量。而赋值给字符数组时,

char p1[9] = "hello";

这是C语言支持的,是数组的初始化,可以理解为下面的代码:

p1[0] = 'h';

p1[1] = 'e';

p1[2] = 'l';

p1[3] = 'l';

p1[4] = 'o';

p1[5] = '\0';

但若先定义,再赋值,就是错误的。

char p2[9];

p2 = "world"; //错误

因为数组名 p2 虽然也是地址,但却是指向本数组首元素的地址,不能更改。

若希望字符数组先定义,再赋值,则可以通过调用函数 strncpy:

怎么给数组赋值字符串的值_https://bianchenghao6.com/blog_后端_第3张

char *strncpy(char *dest, const char *src, size_t n)

把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。