Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中带多句的数组_C_Arrays_Swift_Swift2 - Fatal编程技术网

C语言中带多句的数组

C语言中带多句的数组,c,arrays,swift,swift2,C,Arrays,Swift,Swift2,我该怎么做?在Swift 2中,我会这样做: let test = [ "I'm a sentence.", "Me too.", "What am I?", "I'm whatever" ] print(test[1]) 我如何在C中实现同样的功能 我尝试了以下方法: #include <stdio.h> #include <string.h> int main() { const char strings[] = {

我该怎么做?在Swift 2中,我会这样做:

let test = [
    "I'm a sentence.",
    "Me too.",
    "What am I?",
    "I'm whatever"
]

print(test[1])
我如何在C中实现同样的功能

我尝试了以下方法:

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

int main()
{
 const char strings[] = {
        "I'm a sentence.",
        "Me too.",
        "What am I?",
        "I'm whatever"
  };
  printf("%s", strings[1]);
  return 0;
}
#包括
#包括
int main()
{
常量字符字符串[]={
“我是一个句子。”,
“我也是。”,
“我是什么?”,
“我什么都不是”
};
printf(“%s”,字符串[1]);
返回0;
}

示例

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

int main()
{
  const char *strings[] = {
        "I'm a sentence.",
        "Me too.",
        "What am I?",
        "I'm whatever"
  };
  printf("strings[1]: %s\n", strings[1]);
  return 0;
}

示例

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

int main()
{
  const char *strings[] = {
        "I'm a sentence.",
        "Me too.",
        "What am I?",
        "I'm whatever"
  };
  printf("strings[1]: %s\n", strings[1]);
  return 0;
}

好的……首先,了解这里发生了什么:

“我也是”
本身就是一个字符数组,所以你放的每个句子都是这样。 另外,
char*
指向句子中的第一个字符

你的问题: 您没有创建一个包含所有句子的数组(aka指向每个句子的第一个字符),而是定义了
char strings[]
这是一个字符数组,aka只指向一个句子(
char*
,记得吗?)

但是,您应该声明char*
数组,这样您就可以:

                 'o' <- 0X6
                 'o' <- 0X5
                 't' <- 0X4
                 ' ' <- 0X3
                 'e' <- 0X2
                 'm' <- 0X1
                  ^
                  |  . . .
                ----------------
char* arr[]:    | 0x1 |   |   |
                ----------------

'o'好吧……首先,了解这里发生了什么:

“我也是”
本身就是一个字符数组,所以你放的每个句子都是这样。 另外,
char*
指向句子中的第一个字符

你的问题: 您没有创建一个包含所有句子的数组(aka指向每个句子的第一个字符),而是定义了
char strings[]
这是一个字符数组,aka只指向一个句子(
char*
,记得吗?)

但是,您应该声明char*
数组,这样您就可以:

                 'o' <- 0X6
                 'o' <- 0X5
                 't' <- 0X4
                 ' ' <- 0X3
                 'e' <- 0X2
                 'm' <- 0X1
                  ^
                  |  . . .
                ----------------
char* arr[]:    | 0x1 |   |   |
                ----------------


'o'谢谢,这就是我要找的。我的解决方案完全正确,只不过我错过了
字符串之前的
*
。为什么我必须把
*
放在那里?因为成员字符串的大小不一致。因此,我们正在初始化一个指向字符串文本的指针数组(长度已知)(大小已知)memory@S.Eberl如果没有
*
字符串
是一个
字符
数组,这意味着它可以容纳一个字符串。有了
*
字符串
是一个
char*
数组,这意味着它可以存储无限量的字符串(字符串文本,
char*
),谢谢,这就是我要找的。我的解决方案完全正确,只不过我错过了
字符串之前的
*
。为什么我必须把
*
放在那里?因为成员字符串的大小不一致。因此,我们正在初始化一个指向字符串文本的指针数组(长度已知)(大小已知)memory@S.Eberl如果没有
*
字符串
是一个
字符
数组,这意味着它可以容纳一个字符串。使用
*
strings
是一个
char*
数组,这意味着它可以存储无限量的字符串(字符串文本,
char*
s)
char strings[]
可以在数组中存储一个句子
*
可以在数组中存储无限量的字符串,因为它是char*@Olaf数组,即使他不理解
*
的用途,他现在也会阅读它。他可能读过书,也做过一些程序,但有时他所学的东西会使他失败,需要一点推动才能使他走上正确的道路。@Nasr谢谢!我现在学习C大约有两周了,所以当然不是我做的每件事都能成功。
charstrings[]
使在数组中存储一个句子成为可能
*
可以在数组中存储无限量的字符串,因为它是char*@Olaf数组,即使他不理解
*
的用途,他现在也会阅读它。他可能读过书,也做过一些程序,但有时他所学的东西会使他失败,需要一点推动才能使他走上正确的道路。@Nasr谢谢!我现在学习C大约有两个星期了,所以当然不是我做的每件事都成功了。我还是不明白。如果我声明
charstrings[]
我有一个数组,我可以用
charstrings[]={“Me-too”}存储
Me-too
。如果我想在其中存储第二个句子,为什么我需要一个指针而不仅仅是像
char strings[][]=…
?对于每个新句子,你需要一个char*,因此,你需要一个char*数组。经验法则:每个
[]
都意味着一个指针=>
char[]]arr=char*arr[]=char**arr
所以:
char*strings[]
应该与
char strings[][]
相同吗?因为第二个版本不行,我还是不明白。如果我声明
charstrings[]
我有一个数组,我可以用
charstrings[]={“Me-too”}存储
Me-too
。如果我想在其中存储第二个句子,为什么我需要一个指针而不仅仅是像
char strings[][]=…
?对于每个新句子,你需要一个char*,因此,你需要一个char*数组。经验法则:每个
[]
都意味着一个指针=>
char[]]arr=char*arr[]=char**arr
所以:
char*strings[]
应该与
char strings[][]
相同吗?因为第二个版本不起作用。