字;“你好”;分配到chr'的数组;C中的s
在C语言中,这是合法的,并将编译:字;“你好”;分配到chr'的数组;C中的s,c,arrays,C,Arrays,在C语言中,这是合法的,并将编译: char names[5] = "Hello"; 但这不是: char names[5]; names = "Hello"; 如何将赋值放在单词“Hello”的字符数组中?没有strcpy,我能做到吗?你不能。在C中,数组不是左值,因此不能赋值 唯一的方法是: 使用复制功能(例如memcpy或strcpy) 一次分配一个元素(eew) 使用指针而不是数组。民间有一种说法,“数组只是一个指针”(是的,这是3个链接) 你不能。在C中,数组不是左值,因此不能
char names[5] = "Hello";
但这不是:
char names[5];
names = "Hello";
如何将赋值放在单词“Hello”的字符数组中?没有strcpy,我能做到吗?你不能。在C中,数组不是左值,因此不能赋值 唯一的方法是:
- 使用复制功能(例如
或memcpy
)strcpy
- 一次分配一个元素(eew)
- 使用指针而不是数组。民间有一种说法,“数组只是一个指针”(是的,这是3个链接)
- 使用复制功能(例如
或memcpy
)strcpy
- 一次分配一个元素(eew)
- 使用指针而不是数组。民间有一种说法,“数组只是一个指针”(是的,这是3个链接)
- 你不能。在C中,数组不是左值,因此不能赋值
唯一的方法是:
名称
字符串应至少包含6(而不是5)个字符,因为终止的空字节:
char names[6];
使用strcpystrcpy
或等效代码,例如
names[0] = 'H';
names[1] = 'e';
names[2] = 'l';
names[3] = 'l';
names[4] = 'o';
names[5] = (char)0;
最新版本的
gcc
(即4.6),当要求进行足够的优化时(-O2
),将优化strcpy(名称,“Hello”)转换为上述代码的等效项。您的名称
字符串应至少包含6(而不是5)个字符,因为终止的空字节:
char names[6];
使用strcpystrcpy
或等效代码,例如
names[0] = 'H';
names[1] = 'e';
names[2] = 'l';
names[3] = 'l';
names[4] = 'o';
names[5] = (char)0;
最新版本的
gcc
(即4.6),当要求进行足够的优化时(-O2
),将优化strcpy(名称,“Hello”)代码>转换为与上述代码等效的代码。您的代码将出现问题。C字符串末尾有一个额外的空字符。“Hello”需要6个字节。我相信在第一个示例中,字符串“Hello”将变成“Hell”。您的代码将出现问题。C字符串末尾有一个额外的空字符。“Hello”需要6个字节。我相信在第一个示例中,您的字符串“Hello”会变成“Hell”。谢谢。那我就试试别的。谢谢。然后我将尝试其他方法。枚举从0开始,因此实际上有6个字符。@Edgar否,您保留了5个字符,这就是您得到的,没有额外的字符神奇地添加,因此您的字符名[5]=“Hello”;您正在覆盖内存,最好写字符名[]=…枚举从0开始,所以实际上有6个字符。@Edgar否,您保留了5个字符,这就是您得到的,没有额外的字符神奇地添加,所以确实有您的字符名[5]=“Hello”;您正在覆盖内存,最好写入字符名[]=…您的名称字符串应至少为6个字符,5+1(对于“\0”)您的名称字符串应至少为6个字符,5+1(对于“\0”)