【发布时间】:2012-04-10 23:24:26
【问题描述】:
假设我们有一个指针数组:
char *ptr[30];
现在这工作正常,并且似乎没有做任何意想不到的事情! 我可以轻松输入姓名。
scanf("%s", ptr[1]);
scanf("%s", ptr[2]);
scanf("%s", ptr[3]);
printf("%s\n", ptr[1]);
printf("%s\n", ptr[2]);
printf("%s\n", ptr[3]);
我的问题是如果可以以这种方式使用指针来存储名称的结束数,那么为什么要使用 malloc。?在这种情况下,ptr[1] 不指向输入中的字符,而是指向新的输入本身。 例如,如果 ptr 有 mukul,ptr[1] 应该指向 'u' 如果像这样声明指针时没有分配空间,那么限制是什么?
【问题讨论】:
-
另外,需要注意的是数组的第一个元素是ptr[0]。
-
尝试在
scanfs 和printfs 之间做一些事情。您应该会看到一些未定义的行为。 -
是的 ptr[0] 肯定在那里!感谢您的回复!