| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1759 人关注过本帖
标题:咨询字符型指针或整形指针在定义后分配内存空间的问题
取消只看楼主 加入收藏
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
结帖率:84.38%
收藏
已结贴  问题点数:2 回复次数:4 
咨询字符型指针或整形指针在定义后分配内存空间的问题
在定义字符或整型指针的时候,是不是必须要先分配空间,再使用?
如这题
#include"stdio.h"
int main(){
    char *a;
    gets(a);
    printf("%s",a);
}
,并没有用如下方式分配内存
char a[80];
 char* b=a;
你为什么能正确运行?还有是不是可这样理解,在程序中如出现
  char *a;
    gets(a);
这种情况,他会随机的分配内存地址,如在大程序中,这样使用,可能会占用其他变量的内存,引起程序错误,所以在定义指针的时候,必须要先赋予地址?????????????
搜索更多相关主题的帖子: include 空间 内存 
2012-01-10 22:30
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用zaixuexi在2012-1-10 22:36:52的发言:

1. 出于安全考虑,是的
2. 是的
你要清楚的知道你当前正在用的指针指向了一个有效的地址空间
嗯,明白了,呵呵

认为事物非黑即白是缺智慧的表现……
2012-01-10 22:56
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用embed_xuel在2012-1-10 23:02:44的发言:

char *a;这只是定义了一个字符型的指针变量,没有分配内存,指针未初始化,指向的内存是不可控的。你对指针的理解还很不到位,需要大量的练习
嗯嗯。就是一有空就在练习

认为事物非黑即白是缺智慧的表现……
2012-01-10 23:04
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
很感谢楼上几位详细的讲解。基本上有个整体的认识了,很感谢楼上几位,真的。刚吃完饭。
我觉得用下面一个小程序就能说明我对这节的几点认识了
#include"stdio.h"
#include"malloc.h"
int main(){
    char *a;
    a=(char *)malloc(0);//malloc里的参数是分配的内存大小,这里默认为0,malloc的作用是在内存中为指针a分配一个指向内存空间的合法指针,
      gets(a);          //只不过分配的是空内存 。指针在就行运算的时候要进行初始化,可通过数组,malloc等等方式。
     printf("%s",a);
    free( a );
}


认为事物非黑即白是缺智慧的表现……
2012-01-11 19:52
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
结贴了噢

认为事物非黑即白是缺智慧的表现……
2012-01-15 19:16
快速回复:咨询字符型指针或整形指针在定义后分配内存空间的问题
数据加载中...
 
   



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

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