【发布时间】:2016-04-14 11:06:48
【问题描述】:
st 不应该是指向 char 的指针数组而不是指向 char 的指针吗?不明白后者for loop是怎么打印值的?
int main(void)
{
char temp[256];
char *st;
for (int i = 0; i < 3; i++)
{
scanf("%s", temp);
st= strdup(temp);
}
for(int i=0;i<3;i++)
{
printf("%s",st);
}
}
【问题讨论】:
-
"字符串不应该是指向 char 的指针数组而不是指向 char 的指针吗?"绝对不是,至少在 C 中。在 C 中,字符串表示为 字符数组 i> 在字符串末尾以空字符结尾。
-
字符串可以是字符数组或指向第一个字符的指针。为什么需要一个指向字符的指针数组?您是否在想象一个字符串,其中每个字符可能位于完全不同的内存位置?
-
人们会期望字符串位于连续的内存区域中,因此只有指向第一个字符的指针就足够了,所有其他字母都在该点和下一个 '\0' 字符之间。正确的? :)
-
@MikeCAT 我想你从字符串中误解了我的问题,我指的是我在这段代码中声明的那个指针。不管怎样,我编辑了它,你现在可以检查它
-
@Ria 你没有解释为什么你认为应该有一个指向字符的指针数组。您是否想象字符串中的每个字符都可能存储在完全不同的内存位置?此外,你没有解释你得到什么输出或你给出什么输入。所以很难弄清楚“我不明白后者 for 循环如何打印值?”是什么意思。你在说什么价值?