C中的变量声明

1 c memory-management segmentation-fault variable-declaration

我试图声明一个整数变量m和一个指向整数数据类型n的指针.

int m,*n;
*n=2;
printf("%d",*n);
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常.但

int *n,m;
*n=2;
printf("%d",*n);
Run Code Online (Sandbox Code Playgroud)

给出了分段错误.

请解释原因?

Dav*_*nan 7

两个版本都是错误的 - 你只是幸运的是那个有效的版本.你已经声明了一个指针,但没有为它分配任何存储空间.试试这个:

int *n,m;
n=&m;
*n=2;
printf("%d",*n);
Run Code Online (Sandbox Code Playgroud)

或使用malloc():

int *n;
n=malloc(sizeof(int));
*n=2;
printf("%d",*n);
free(n);
Run Code Online (Sandbox Code Playgroud)