c - 一个简单的指针代码

标签 c pointers

#include <stdio.h>

int main(void)
{
    int* a;
    *a=20;
    printf("%i\n",*a);

    return 0;
}

我有上面的代码。当代码在运行时时,我总是收到错误消息“filename.exe 已停止工作”。为什么?

最佳答案

您没有为指向的指针分配任何内存。您可以这样做:

int *a = malloc(sizeof(*a));

或者像这样:

int value;
int *a = &value;

如果您使用 malloc 进行分配,那么当您使用完指针后,您将需要对指针调用 free

访问未初始化的指针会导致未定义的行为。在您的程序中,它导致了段错误,这是未初始化指针访问的一种常见结果。

关于c - 一个简单的指针代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15760329/

相关文章:

c - C 中的字符串操作,<optimized out> 错误

将字符串转换为名称标识符

arrays - 警告 : format ‘%s’ expects type ‘char *’ , 但参数 2 的类型为 ‘char (*)’

c++ - 现代 C++ 中的唯一指针

c++ - 使用 2 个 char[] 指针列表初始化一个 vector<string>

c - C中带指针的字符串数组

c - 自由内部线程导致段错误

c - glibc 的严格别名规则和 strlen 实现

c - 调试时的以下 C 语句显示 k 的值为 -2。为什么?实际上,它应该显示-2.000000

c - 简单的 C 程序在变量应该 scanf 后一致地将变量打印为 6356748