小程序幫我看看哪錯了??

shihyuyao 2005-02-20 03:05:54
#include <stdio.h>
#include <stdlib.h>

int main()
{

char *s[5];
int i;

for(i=0;i<5;i++)
scanf("%s\n",s[i]);

for(i=0;i<5;i++)
printf("%s\n",s[i]);



system("pause");
return 0;
}

我要輸入5個字串在輸出5個字串
...全文
418 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
searoom 2005-02-22
  • 打赏
  • 举报
回复
其实数组名也是一个指针,只不过它是个“指针常量”,不允许对其进行地址的更改
searoom 2005-02-22
  • 打赏
  • 举报
回复
我觉得字符串最好这样用

char carray[10];
char *sp;

sp=carray;

//之后再使用指针

基本的数据类型编译器都会自动先分配空间的
但指针类型是个例外!

其实,我觉得指针类型是“面向对象”的基础,类变量其实也是指针
所以,对所有类变量都必须有一个 Create 的过程
(除非该类变量就是用来引用其他对象的)

和上面的回答中必须先给 指针 分配内存空间是一个道理
reludson 2005-02-22
  • 打赏
  • 举报
回复
还是内存泄露的问题
xxxdg 2005-02-22
  • 打赏
  • 举报
回复
定义指针变量以后,
必须为它分配安全的内存地址。

(1)malloc 或者 new
(2)让它指向程序内已经分配的安全空间,如下:
int a=10;
int * p = & a;

不论是单独的指针变量,还是指针数组。
如果用malloc或new 分配了内存,使用完毕之后,
记得用free 或者 delete 回收内存(malloc与free相对,new 与delete)。
xxxdg 2005-02-22
  • 打赏
  • 举报
回复
include <stdio.h>
#include <stdlib.h>

int main()
{

char *s[5];
int i;

for(i=0;i<5;i++)
{

scanf("%c",&s[i]);

}
for(i=0;i<5;i++)
printf("%c",s[i]);



system("pause");
return 0;
}
楼住这样写就很明了了

-----------------------------------------------------------------------
//——— 回复人: xxxdg(学习中) ( ) 信誉:100 2005-02-20 15:26:00 得分: 0


char *ss[5];
定义了一个指针类型的数组,至于每个指针所指向的地址,并没有给出.
所以还需要malloc()
—————————————————————————————————————————————朋友们是否能考虑下我的代码,我没有malloc地址空间给s[],为什么也能得到结果,我也很凝惑,请高手们指点迷津,谢谢
-----------------------------------------------------------------------------------------
你这样做是非常不对的.
尽管语法上面不会出错。
你首先自已给这个ss数组里面的5个指针变量赋了值,
并且很明显,赋的是%c类型的数据,即单字节数据。
比如:
ss[0]='a',即 ss[0]=97
也就是说,指针变量 ss[0] 指向了 97这个地址,
如果你要取 *ss[0] 的话,哦,so 恐怖
可是你接下来竟然向这个地址赋值了,
你把ss[0]指向的单元赋值为'A",
这样做是非常危险的。
所以并不是说指针变量能指向某个地址,你就能赋值的。

一般情况下,低地址是保留的。
destinehere 2005-02-21
  • 打赏
  • 举报
回复
无法读入空格啊,要是想读入空格怎么做呢?
lohan 2005-02-21
  • 打赏
  • 举报
回复
好啊,长了见识了
diyiori 2005-02-21
  • 打赏
  • 举报
回复
输入5个A呀。
haha52 2005-02-21
  • 打赏
  • 举报
回复
是输入5字符还是5字符串?
junzli 2005-02-21
  • 打赏
  • 举报
回复
//——— 回复人: xxxdg(学习中) ( ) 信誉:100 2005-02-20 15:26:00 得分: 0


char *ss[5];
定义了一个指针类型的数组,至于每个指针所指向的地址,并没有给出.
所以还需要malloc()
—————————————————————————————————————————————朋友们是否能考虑下我的代码,我没有malloc地址空间给s[],为什么也能得到结果,我也很凝惑,请高手们指点迷津,谢谢


junzli 2005-02-21
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main()
{

char *s[5];
int i;

for(i=0;i<5;i++)
{

scanf("%c",&s[i]);

}
for(i=0;i<5;i++)
printf("%c",s[i]);



system("pause");
return 0;
}
楼住这样写就很明了了
xiaofeme 2005-02-21
  • 打赏
  • 举报
回复
受不了
223xh 2005-02-21
  • 打赏
  • 举报
回复
3Q,终于知道MALLOC是什么了,指针终于透彻了
catlan 2005-02-21
  • 打赏
  • 举报
回复
没有分配空间
jin_hua 2005-02-20
  • 打赏
  • 举报
回复
en
ineedu_cn 2005-02-20
  • 打赏
  • 举报
回复
因为指针定义的时候不分配存储空间,那就必须要初始化使其有一个存储空间之后方可以使用。
playmud 2005-02-20
  • 打赏
  • 举报
回复
en
MUZI7632 2005-02-20
  • 打赏
  • 举报
回复
en
taotao7805 2005-02-20
  • 打赏
  • 举报
回复
收藏!
taotao7805 2005-02-20
  • 打赏
  • 举报
回复
收藏!
加载更多回复(7)

69,380

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧