C |动态内存分配|问题3

输出

null

# include<stdio.h>
# include<stdlib.h>
void fun( int *a)
{
a = ( int *) malloc ( sizeof ( int ));
}
int main()
{
int *p;
fun(p);
*p = 6;
printf ( "%d" ,*p);
return (0);
}


(A) 可能行不通 (B) 作品和印刷品6 答复: (A) 说明: 该程序无效。尝试替换“int*p”带有“int*p=NULL;”它将尝试取消对空指针的引用。 这是因为fun()会复制指针,所以当调用malloc()时,它会将复制的指针设置为内存位置,而不是p。p在调用fun()之前和之后指向随机内存,当您取消引用它时,它会崩溃。 如果要从函数向指针添加内存,则需要传递指针的地址(即双指针)。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享