c - C程序中的指针

标签 c pointers

考虑以下 C 语言中的 2 段代码:- 第一个代码:-

int main()
{
    int *a,*b;
    *a=1;
}

第二个代码:-

int main()
{
    int *a,*b;
    *a=1;
    *b=1;
}

两者都编译没有错误。但第一个运行,第二个不运行。谁能解释一下吗?

最佳答案

它们都表现出未定义的行为:第一个运行的原因是默认情况下恰好位于 a 中的指针指向内存中的一个区域,写入该区域不会碰巧导致崩溃(这仍然是非法的)。您需要初始化指针来解决此问题:

int *a = malloc(sizeof(int));
int *b = malloc(sizeof(int));
*a = 1;
*b = 1;
free(a);
free(b);

关于c - C程序中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167858/

相关文章:

c - 在 main 函数中使用变量通过 main 外部的 malloc 定义数组的大小?

c++ - 在 Mac Yosemite 上构建 levmar

c - 如何在 C 中将函数的 I/P 参数打印为变量

c++ - 使用 MPI 进行并行编程以使用动态二维数组进行矩阵乘法时如何解决问题?

c - 示例中的指针

c - 当指针指向一个新字符串时,分配给该指针寻址的字符串的内存会发生什么?

c++ - Eclipse-PDT:更改包含文件夹

在 C 中连接字符串。在输出中换行

c++ - 如何在不使用 realloc 的情况下使用 new 和 delete C++ 时释放动态数组?

c++ - 将 char* 值存储到 unsigned char** 数组中