首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问两个概念性的有关问题?多谢回答~

2012-03-29 
问两个概念性的问题?谢谢回答~~(1)是不是每次定义一个指针都要给他指定一块内存空间的?例如:char*p,str[20

问两个概念性的问题?谢谢回答~~
(1)是不是每次定义一个指针都要给他指定一块内存空间的?
例如:
char   *p,str[20];
gets(str);
p=(char   *)malloc(strlen(str)+1);
strcpy(p,str);
可问题是我发现,那个给指针p指定一块内存空间的语句有和没有,程序都能正常运行的嘛。那为什么还要多此一举,给新指针分配内存空间呢?

(2)每次要用到给指针分配内存空间的语句是不是都要用到   include   "alloc.h "   这个头文件的。

[解决办法]
1. 不是
2. 对C是.需要直接或间接的#include <alloc.h> . 间接是指,可能你#include "my_head.h ", 这个my_head.h 里 直接或间接的 #include <alloc.h>
3. 对C++不是.c++可以用new
[解决办法]
1 指针不指向一个东西,你为什么要声明它呢?
2 你要用到一个函数,必须让计算机认识它。
[解决办法]
这是一个习惯问题,你不给指针分配内存就引用指针操作内存的话,后果将会很严重.
不分配内存的指针是一个野指针,你在网上搜索野指针的知识看看就知道了
[解决办法]
没有方向的指针 叫野指针。 既然野 当然不好(走江湖解释^-^)
-------------------------
(1)是不是每次定义一个指针都要给他指定一块内存空间的?
------------------------------------
你不给指针一块安全的空间,那么指针的值就是随机的。随机的东西,是不可靠的。
随机的指针,你对他进行读取操作,安全上还不会有很大的问题。
如果你对他写入操作呢?而恰好你这个野指针,又指向系统程序,那就改变了系统程序。你说可靠吗?

函数malloc 分配出来的,是空闲的,当然就是安全的
[解决办法]
不分配空间指针指向哪里是不确定的,在这个例子里,你copy了一堆东西去那个地址,没出问题是运气好,因为那个指针所指地址之后的一片内存正好没有别人用。

热点排行