设为首页 加入收藏

TOP

C语言、指针的指针和野指针的问题
2014-11-24 00:43:39 来源: 作者: 【 】 浏览:70
Tags:语言 指针 问题

int _tmain(int argc, _TCHAR* argv[])
{
int * p = (int *) malloc(sizeof(int));
//*p = 10;
flee(p);
printf("%d",*p);
//释放p
free(p);
printf("----");
int * i = (int *) malloc(sizeof(int));
flee2(&i);
//释放i
printf("%d",*i);
free(i);
}
//入参为指针,仍为值传递,即副本。只有引用传递是传递p本身。
void flee(int *q)
{
//副本修改的是指针所指变量的值,而不是指针本身。
*q = 20;
//出栈时副本被自动销毁,而外面的P所指变量的值被改了,但指针地址实际上未改变。
}

void flee2(int **q)
{
//int i = 5;
////副本指向了一个新的位置,所以真正地修改了一个指针地址。但产生的一个问题是,原始定义的i产生了野指针。
//*q = &i;
//i =3;
if(q != NULL && *q != NULL)
{
*(*q) = 5;
}
}

摘自 功夫 熊猫
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言――第一章 下一篇指针解析(二)(原)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: