C语言中带多句的数组
我该怎么做?在Swift 2中,我会这样做: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[] = {
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[][]
相同吗?因为第二个版本不起作用。