| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 940 人关注过本帖
标题:请问我这样用是不是就是对指针P进行了初始化?
只看楼主 加入收藏
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
 问题点数:0 回复次数:7 
请问我这样用是不是就是对指针P进行了初始化?
void main()
{
char *p;
p="there is a example";
}
请问我这样用是不是就是对指针P进行了初始化?还是必须用malloc后再p="there is a example";
搜索更多相关主题的帖子: 指针 
2008-05-12 15:02
xingkid
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-27
收藏
得分:0 
是不是还应该让指针指向一个你自己定义的变量呢?好像你这样的指针被称为“野指针”吧。
我也是新手,可能说得不对哈。
2008-05-12 16:18
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
得分:0 
我就是不知道这样算不算才问呀,我们一样

学习编程的秘诀是:编程,编程,再编程;
2008-05-12 16:22
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
野指针
开放分类: C语言

“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种:

一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。

二、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。例:

char *p = (char *) malloc(100);

strcpy(p, “hello”);

free(p); // p 所指的内存被释放,但是p所指的地址仍然不变

if(p != NULL) // 没有起到防错作用

strcpy(p, “world”); // 出错

另外一个要注意的问题:不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放

学习需要安静。。海盗要重新来过。。
2008-05-12 16:31
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
得分:0 
谢谢朋友,我消化下

学习编程的秘诀是:编程,编程,再编程;
2008-05-12 16:39
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
void main()
{
char *p=malloc(sizeof("there is a example")+1);
strcpy(p,"there is a example");
puts(p);
printf("%0x\n",p);
free(p);
puts(p);
printf("%0x\n",p);
}
同时free()和delete只能释放由new 和malloc()等动态创建的指针,
你的创建方式,是用指针指向一个常量,不属于野指针,但是最好动态创建,动态释放.用完后把它指向null

学习需要安静。。海盗要重新来过。。
2008-05-12 17:03
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
得分:0 
谢谢 了

学习编程的秘诀是:编程,编程,再编程;
2008-05-12 17:18
LIU_3248909
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-5-21
收藏
得分:0 
菜鸟问指针
当实参是指针时为什么执行不了,是本身不执行还是程序有问题.
帮忙找个例子!谢谢!!!!
2008-05-21 12:36
快速回复:请问我这样用是不是就是对指针P进行了初始化?
数据加载中...
 
   



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

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