免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2283 | 回复: 11
打印 上一主题 下一主题

求助!!!急急急!!!关于指针数组下外部变量的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-07 16:23 |只看该作者 |倒序浏览
各位朋友,我是一个菜鸟刚学c语言不长时间,有好多的白痴问题还想请高手们帮帮忙,不要嫌弃我这个小弟,因为我正处在考试前的复习阶段,我在自学计算机语言,如果朋友们肯帮我,我会感激不尽的,我会更加有信心的去学好它。所以请千不要嫌弃我这个小弟。我在这里先谢谢大家了。下面我练习时的一小段代码没什么实在意义,不过有个很大的疑问我想求助大家,希望朋友们可以帮助我。
#include"stdio.h"
char *p[10];
main()
{
register int t;
p[2]="Why";
for(t=0;t<10;t++)
{gets(p[t]);
printf("%s\n",p[t]);}
printf("%s\n",p+1);
}
在上面这个代码中,p是一个已经定义的字符型指针数组,而且是在主函数之外,
问题是我不明白为什么这个字符型指针数组不能在for循环中通过gets()函数赋值,虽然编译没错误可是通过gets()函数后每次都是得到空指针!可是像P[2]这样的简单赋值却可以,或是字符型指针数组要是在主函数内定义也没这样的问题,请问那个高手能告诉我这是为什么?!!!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-09-07 16:47 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

你这样用是危险的,因为你的字符串并没有空间来存储。
关于你的具体问题,正在测试中。

继续学C语言,它很好,很有用。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-09-07 16:53 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

是不是现象是读一个就segment错误了?
因为外部的静态变量自动初始化成0x0了,而0x0就是null指针。
是不可能向null指针gets的,呵呵。
要时刻记住为你的字符串开辟空间哦。

论坛徽章:
0
4 [报告]
发表于 2004-09-07 17:23 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

谢谢各位朋友与各位高手的分析,

论坛徽章:
0
5 [报告]
发表于 2004-09-07 17:35 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

听了aero这位朋友的分析我有些明白但还有些不明白,在程序运行期间没有什么错误提示,只是所有通过gets()的赋值都是以空指针反回。你说为我的字符串开辟空间,是不是指给我定义的字符型指针数组的每个指针赋一个明确的地址,而不能让他们是为空对吧,可是这样的明确地址,我该怎么给它赋呢?难道我还得定义些字符型数组不成吗

论坛徽章:
0
6 [报告]
发表于 2004-09-07 18:02 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

malloc分配一个空间就可以吧。

论坛徽章:
0
7 [报告]
发表于 2004-09-07 18:18 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

呵呵,你是说可以用malloc一次给整个指针数组分配空间是吗?

论坛徽章:
0
8 [报告]
发表于 2004-09-07 18:33 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

"Why" 是字符串常量,
在p[2]="Why"; 中 "Why" 被认为是一个char地址:指向存储这个字符串的空间。你用char* 类的p[2]接受了这个地址,所以是合法的。

>;>;呵呵,你是说可以用malloc一次给整个指针数组分配空间是吗?
这个指针数组的空间已经定了,你要做的是让p
指向有用的空间,可以是malloc得到的,也可以是别的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-09-07 21:25 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

用malloc为数组中的每个元素(你这里的字符串)开辟空间。

论坛徽章:
0
10 [报告]
发表于 2004-09-08 14:22 |只看该作者

求助!!!急急急!!!关于指针数组下外部变量的问题

真高兴有这么多朋友为我解答问题,谢谢aero,谢谢alarum和superroy同时也谢谢所有的高手分析我的问题,关注我的问题。以后我多多和大家讨论,多多学习,多多发贴。一个问题明白了又会有更多的问题等着问,相信有问题就会有进步:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP