请问大牛,如何判断指针是否初始化?
我们知道在定义指针变量的时候,如果没有初始化的话,这个指针变量的值是一个乱七八糟的值,而不是我们有的人想象的null值。事实上,要让指针变量成为null,仍需要显式赋值。
因此,从这个角度讲,指针是否初始化就不能直接判断指针变量的值是否为null了。但是既然不能这么判断,那又该怎么判断呢?比如我要做一个函数,其中一个参数就是指针,怎么对这个指针是否初始化进行判断呢?
谢谢
问题点数:30、回复次数:10Top
1 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-02 16:22:43 得分 5
指针有没有初始化你编写程序的时候还不知道啊?
关于函数参数是指针时, 那么在调用这个函数时, 就有一个实参向形参赋值的过程. 这就是函数参数的初始化呀Top
2 楼pebblefanny(编程恶魔)回复于 2005-11-02 16:28:10 得分 5
我来告诉你吧,你看一下你的指针定义的地方是不是把它与一个变量的地址相连了啊!!
再就是你想定义指针了,就先想清楚它要指向谁,然后再用,不就避免了它乱指了吗/Top
3 楼bm1408(向va_list学习~不用VC好多年~)回复于 2005-11-02 16:29:15 得分 5
我一般是采用
assert()
Top
4 楼bm1408(向va_list学习~不用VC好多年~)回复于 2005-11-02 16:30:10 得分 0
char *strcpy(char *dest,const char *source)
{
assert(dest!=NULL);
...Top
5 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-02 16:31:05 得分 5
assert()不管用
野指针用assert()也不能解决问题Top
6 楼archim(PRC)回复于 2005-11-02 16:37:51 得分 5
只能一行行的对着程序看,呵呵Top
7 楼addcplus(一打就倒)回复于 2005-11-02 16:55:21 得分 0
--这是人家面试官问我的问题 :)
--问题在于指针不是写函数的人定义的怎么办?就说如果是多人合作开发的时候,你确实无法保证人家的指针已经初始化了啊?我需要在函数内部进行判断的
比如要实现void memmove(void * Destination,void * Source,site_t n)函数的话,怎么对两个指针参数进行检查呢?谢谢Top
8 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-02 17:02:03 得分 0
无法检查传入的指针是否是指向有效地址的指针.
问题在于指针不是写函数的人定义的怎么办?
-----------------------------
这个就需要一个团队进行一些合作开发的规范.
比如要求定义指针时,必须进行初始化, 不用的指针必须置为NULL等, 就可用是否为NULL来判断指针是否有效了.Top
9 楼cg_i(半点闲)回复于 2005-11-02 17:09:52 得分 5
C自它生出来那天~~~就没有这个功能。Top
10 楼addcplus(一打就倒)回复于 2005-11-02 17:16:01 得分 0
这就是印证了“用C/C++来开发就跟开越野车一样”这句话了,呵呵Top




