编辑C数组我是一个小白到Ç编程(我来自的土地JS和PHP),作为一个学习的过程,我试图写一个程序,要求提供用户的姓名,然后将其打印出来,除了将第一个字母更改为z
。然而,当我去编译代码,它返回以下error
消息中提到的行name[0] = "Z";
无法通过索引
警告:赋值时将指针整数,未作铸
是否有一个原因,我可以” t将值分配给char
array
中的特定索引?
(注:我曾尝试类型转换"Z"
为char,但它只是扔error
警告:投从指针不同size`的整数)
编辑C数组我是一个小白到Ç编程(我来自的土地JS和PHP),作为一个学习的过程,我试图写一个程序,要求提供用户的姓名,然后将其打印出来,除了将第一个字母更改为z
。然而,当我去编译代码,它返回以下error
消息中提到的行name[0] = "Z";
无法通过索引
警告:赋值时将指针整数,未作铸
是否有一个原因,我可以” t将值分配给char
array
中的特定索引?
(注:我曾尝试类型转换"Z"
为char,但它只是扔error
警告:投从指针不同size`的整数)
不像某些语言做不区分字符串和字符,C需要不同的字符语法(与单字符字符串相比)。
你需要使用单引号:
name[0] = 'Z';
的错误是很神秘的,虽然。它试图说"Z"
,一个单字符C字符串,被分配到name[0]
,一个整数类型char
。 C字符串是数组;数组可转换为指针。因此,C将它视为一个指向int的指针而不需要强制转换。
非常感谢。 JS和PHP没有这样的东西,所以我不知道。 –
替换name[0] = "Z";
与name[0] = 'Z';
。
'single-quatation'用于字符element
,“double-quatation”用于字符串赋值。
在C中,单引号和双引号带有不同的含义。事实上,在C中没有“字符串”的概念。您有基本的char数据类型,其中char由单引号表示。为了表示字符串,可以将它们存储为一个字符数组。例如,
char text[] = {'h', 'e', 'l', 'l', 'o'};
这仅仅是一个写作的比较繁琐的方式
char text[] = "hello";
这是完全一样的第一个例子,不同之处在于有一个是空字符\0
末(这是C如何检测“字符串”的结尾)。这与char text[] = {'h', 'e', 'l', 'l', 'o', '\0'};
的说法相同,除非现在您可以更轻松地处理阵列,如果您想对其进行基于字符串的处理。
来到你的问题,如果你想索引的“串”某个字符,你需要通过它的指数在数组中访问它。
因此,text[0]
返回字符h
,这是char
类型。要指定不同的值,您必须指定一个单引号字符,如下所示:
text[0] = 'Z';
单引号不是双引号 –