【问题标题】:Cannot edit a C array by index无法按索引编辑 C 数组
【发布时间】:2016-07-02 21:00:34
【问题描述】:

我是 C 编程的菜鸟(我来自 JSPHP),作为学习练习,我尝试编写一个询问用户名的程序,然后将其打印出来,只是将第一个字母更改为z。但是,当我去编译代码时,它返回了以下 error 消息,引用了 name[0] = "Z";

警告:赋值从没有强制转换的指针中生成整数

我无法为char array 中的特定索引分配值是否有原因?

(注意:我尝试将"Z" 类型转换为字符,但它只是抛出了error

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

【问题讨论】:

  • 单引号不是双引号

标签: c arrays assign


【解决方案1】:

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

你需要使用单引号:

name[0] = 'Z';

不过,这个错误非常神秘。它试图说"Z",一个单字符C字符串,被分配给name[0],一个整数类型char。 C字符串是数组;数组可以转换为指针。因此,C 将其视为没有强制转换的指向 int 的指针赋值。

【讨论】:

  • 非常感谢。 JS 和 PHP 没有这样的东西所以我不知道。
【解决方案2】:

name[0] = "Z"; 替换为name[0] = 'Z';

'single-quatation' 用于字符 element,而“double-quatation”用于字符串赋值。

【讨论】:

    【解决方案3】:

    在 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';
    

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      相关资源
      最近更新 更多