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)
给出了分段错误.
请解释原因?
两个版本都是错误的 - 你只是幸运的是那个有效的版本.你已经声明了一个指针,但没有为它分配任何存储空间.试试这个:
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)
| 归档时间: |
|
| 查看次数: |
943 次 |
| 最近记录: |