[英]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.