【问题标题】:Array with int and char in CC中具有int和char的数组
【发布时间】:2015-07-16 02:00:23
【问题描述】:

我需要在 array[3][3] 上放置 3 个字符串。

我试着用指针来做,但我只收到一个字符。

#include <stdio.h>

int array[3][3]
char thing[5] = "thing";

main()
{
    thing = array[0][0];
    printf("%s", array[0][0];
}

【问题讨论】:

  • 请注意,您的数组定义为 int。
  • @EOF 数组在 C 中不是“不可变的”——字符串 literals 是,但 thing[5] 是一个可变数组,由 5 个字符组成,初始化为包含 't', 'h', 'i', 'n', 'g'。它是有道理的并且是有效的 C,它只是不是 C 字符串,因为缺少终止 NUL。删除 5 将使其成为 6 个字符的数组(由编译器自动计数以包含 NUL) - 这将是一个有效的字符串,但仍然是可变的,因为它仅从字符串文字初始化,而不是指向一个的指针。
  • @Arkku:不。数组 不可变的。它们的内容可能是可变的,但数组本身不是。
  • @EOF 啊,您的意思是分配给thing - 这确实是错误的,因为thing 不是指针。但是说“数组是不可变的”是错误的,因为不可变数组是const 数组,而事实并非如此。正确的意思是“你不能分配给一个数组”(或者,更专业地说,“数组不是左值”)。
  • @EOF 我只是想补充一点,我不想听起来充满敌意;我确实明白你关于数组地址不可分配的观点,但我不同意这个术语:根据这个论点,有人可能会说,例如,int i 是不可变的,因为&amp;i = p 是无效的,只有内容的i(单个int)是可变的……数组不是指针,因此不存在不允许赋值的不可变指针。只有数组,它它的内容,而仅此而已,因此如果内容是可变的,它就是可变的。 =)

标签: c arrays char int


【解决方案1】:

试试这个。恕我直言,您的代码绝对不正确,需要进行许多更改。你也需要更新你的编程技能。

#include <stdio.h>
#include <string.h>

char array[3][6]={0};
char *thing = "this";

main()
{
    strcpy(array[0],thing);
    printf("%s\n", array[0]);
}

【讨论】:

  • 这与我想要的很接近,谢谢。在与老师交谈后,我说这是不可能的(并且能够用我的语言解释问题)。
  • @Dash95 很高兴看到回复有所帮助。
猜你喜欢
  • 1970-01-01
  • 2021-04-03
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多