标题:动态分配疑难
只看楼主
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
 问题点数:0 回复次数:2 
动态分配疑难
#include<stdio.h>
#include<string.h>
void main()
{
 char *p[5],*d;
 int i,j;
 printf("输入5个城市\n");
 for(i=0;i<5;i++)
  gets(p[i]);
 for(i=0;i<5;i++){
  for(j=0;j<4-i;j++){
   if(strcmp(p[j],p[j+1])>0){
        d=p[j];
        p[j]=p[j+1];
        p[j+1]=d;
   }
  }
 }
 printf("按字母排列如下\n\n");
 for(i=0;i<5;i++)
  printf("%s\n",p[i]);
}
我想请教一下为什么用gets(p[i]);却会出现内存问题呢?这个与动态分配有关系吗?
这个问题一直困扰着我,遇到这样的问题就会出错!
麻烦高手能够给我详细的讲解一下什么时候需要用动态分配内存空间!
谢谢了!
搜索更多相关主题的帖子: 动态 疑难 
2009-10-19 16:11
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
得分:0 
一个指针变量只分配四个字节,当你把一个大于四个字节的字符串赋给一个字符指针,发生溢出,当然会弹出对话框说不能“writen"了

顺境逆境切莫止境,得意失意切莫在意。
2009-10-19 17:44
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
得分:0 
回复 2楼 无诲今生
你应该好久没有看书了吧?或者说你对于c语言的学习还不深入呀!哈哈!

愿用余生致力编程
2009-10-19 21:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-289131-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016846 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved