[英]What causes this segmentation fault in my C program?
这是代码
#include <stdio.h>
int* pointer()
{ static int x=8;
int **z;
*z=&x;
printf("%p\n",z);
printf("%p\n",*z);
return *z;}
void main()
{ printf("%d",*(pointer()));}
它应该至少打印地址但不是单个输出。当我调试它时。它说
第 5 行的分段错误:*z=&x
指针z
未初始化,因此具有不确定的值
int **z;
因此,取消引用指针会调用未定义的行为。
*z=&x;
将您的方法与指针z
的声明一起使用,您可以定义函数,例如以下方式
int * pointer( void )
{
static int x=8;
int *p = &x;
int **z = &p;
printf( "%p\n", ( void * )z );
printf( "%p\n",( void * )*z );
return *z;
}
请注意,根据 C 标准,不带参数的函数main
应声明为
int main( void )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.