gpt4 book ai didi

c - 将字符串分配给字符数组

转载 作者:行者123 更新时间:2023-11-30 16:23:21 25 4
gpt4 key购买 nike

我对以下内容感到有点惊讶。

示例1:

char s[100] = "abcd"; // declare and initialize - WORKS

示例2:

char s[100]; // declare
s = "hello"; // initalize - DOESN'T WORK ('lvalue required' error)

我想知道为什么第二种方法不起作用。这似乎很自然(它适用于其他数据类型)?有人能给我解释一下这背后的逻辑吗?

最佳答案

初始化数组时,C 允许您用值填充它。所以

char s[100] = "abcd";

基本相同

int s[3] = { 1, 2, 3 };

但它不允许您进行赋值,因为 s 是一个数组而不是一个自由指针。的含义

s = "abcd" 

是将abcd的指针值赋给s,但是你不能改变s,因为这样就没有任何东西指向数组了.
如果 s 是一个 char* - 一个可以指向任何内容的指针,那么这可以并且确实有效。

如果你想复制字符串,只需使用 strcpy .

关于c - 将字符串分配给字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com