无法按索引编辑C数组

无法按索引编辑C数组,c,arrays,assign,C,Arrays,Assign,我是C编程的新手(我来自JS和PHP),作为一项学习练习,我试图编写一个程序,要求输入用户名,然后将其打印出来,只是将第一个字母改为z。然而,当我去编译代码时,它返回了下面的错误消息,该消息引用了名称[0]=“Z” 警告:赋值从指针生成整数而不进行强制转换 有什么原因我不能在字符数组中为特定索引赋值吗 (注意:我曾尝试将“Z”键入字符,但它只是抛出了错误 警告:从指针强制转换为不同大小的整数`) 与一些不区分字符串和字符的语言不同,C需要不同的字符语法(相对于单个字符串) 您需要使用单引号: n

我是C编程的新手(我来自JSPHP),作为一项学习练习,我试图编写一个程序,要求输入用户名,然后将其打印出来,只是将第一个字母改为
z
。然而,当我去编译代码时,它返回了下面的
错误
消息,该消息引用了
名称[0]=“Z”

警告:赋值从指针生成整数而不进行强制转换

有什么原因我不能在
字符
数组
中为特定索引赋值吗

(注意:我曾尝试将
“Z”
键入字符,但它只是抛出了
错误

警告:从指针强制转换为不同大小的整数`)


与一些不区分字符串和字符的语言不同,C需要不同的字符语法(相对于单个字符串)

您需要使用单引号:

name[0] = 'Z';
不过,这个错误相当隐晦。它试图说
“Z”
,一个单字符的C字符串,被分配给
名称[0]
,这是
字符的一种完整类型。C字符串是数组;数组可以转换为指针。因此,C将其视为指向不带强制转换的int赋值的指针带有
名称[0]=“Z”


“单四分之一”表示字符
元素
,“双四分之一”表示字符串赋值。

在C语言中,单引号和双引号具有不同的含义。事实上,C中没有“字符串”的概念。您有基本的char数据类型,其中char由单引号表示。要表示字符串,请将其存储为字符数组。比如说,

char text[] = {'h', 'e', 'l', 'l', 'o'};
这只是一种更乏味的写作方式

char text[] = "hello";
这与第一个示例完全相同,只是末尾有一个空字符
\0
(这是C检测“字符串”结尾的方式)。这与说
chartext[]={'h','e','l','l','o','\0'是一样的除了现在,如果您想对数组进行基于字符串的处理,您可以更轻松地使用数组


说到你的问题,如果你想索引一个“字符串”中的某个字符,你需要通过它在数组中的索引来访问它

因此,
text[0]
返回类型为
char
的字符
h
。要指定不同的值,必须指定一个带引号的字符,如下所示:

text[0] = 'Z';

单引号而不是双引号非常感谢。JS和PHP没有类似的东西,所以我不知道。