c语言如何给指针参数赋值为null?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如何给指针参数赋值为null?相关的知识,希望对你有一定的参考价值。

如题我想让传入的指针值修改为null,即让实参修改为null。
急,解决了追加20分!!

楼主 其实很简单,例如你定义一个int a;
然后把&a的带入你的函数中,函数的形参为int *p;
在函数中把*p=null,不过最好是用宏定义,把null定位0;
这样a变量的地址所指向的值就变为0了

你要是有什么不懂得可以找我
参考技术A 想实现你的想法也不难,只要用指针的指针即可,下面是我写的一个测试用例:
#include <stdio.h>

void Func(int ** p)

* p = NULL;


int main()

int a = 1;
int * p = &a;

Func(&p);

if (p == NULL)

printf("p == NULL\n");

else

printf("p != NULL\n");

return 0;
本回答被提问者采纳
参考技术B 用指针的引用即可.
例如:
int memnull(int *¶m)

param = NULL;
return 0;

在另一个函数里调用它:
int *a;
memnull(a);
memnull运行完之后a的地址就被修改为NULL了.

或者可以用指针的指针:
int memalloc(int **param)

*param = NULL;
return 0;

调用的时候这样调用:
int *a;
memnull(&a);
这样memnull函数运行完后a的地址也会被修改为NULL.

同理其他操作,申请空间,改变指向等,也可以用指针的引用和指针的指针这两种方法完成.不过还是推荐指针的引用,在写代码时不容易写错.
参考技术C 不可能

c语言的二级指针如何初始化了?

争议对指针的理解不够深刻,首先指针也是一个变量。二级指针保存着是一级指针地址的变量,所以int
**ppdata
=
null说明了 这个二级指针保存的是一个一级指针的地址,保存的地址是0;由于保护模式的缘故,(可自行查阅资料),ring3无法对保护段的内存进行读写,所以会出现运行时崩溃。而第一个没报错的原因是因为一级指针虽然初始化保存了0的地址,但是代码在之后的操对一级指针进行重新赋值让其指向了别的内存段。所以没报错。
参考技术A 二维指针初始化分配空间分成两步操作:
先分配二维指针的行数
再分配每行的数据空间
如:
int **p;
int n=10;
int m=100;
p=(int **)malloc( n*sizeof(int *) ); //分配n行
for( i=0;i
评论
0
0
0
加载更多
参考技术B 二维指针初始化分配空间分成两步操作:
1.
先分配二维指针的行数
2.
再分配每行的数据空间
如:
int **p;
int n=10;
int m=100;
p=(int **)malloc( n*sizeof(int *) ); //分配n行
for( i=0;i
评论
0
0
0
加载更多

以上是关于c语言如何给指针参数赋值为null?的主要内容,如果未能解决你的问题,请参考以下文章

C语言 将整型变量赋值为空

c语言如何给结构体指针赋值?

请问C语言 char类型的指针要怎么赋值?

C语言 NULL赋结构体指针变量

在C语言编程中,为啥要将指针变量在开始的时候赋值为NULL?

C语言如何给用函数二维数组动态赋值