c - 将 int 放入 int 指针中会在 C 中产生运行时错误。

标签 c pointers

以下code在 ideone 中运行良好,但在 codeblocks IDE 中出现运行时错误。是我的 IDE 坏了还是有任何特定于编程语言的问题。

#include<stdio.h>

int main(){
    int *pointer;
    int num = 45;
    *pointer = num;
    printf("pointer points to value %d", *pointer);
    return 0;
}

最佳答案

替换这个

*pointer = num;

pointer = &num;

在给它赋值之前,你的指针应该指向一个内存空间。

当您以这种方式定义指针时:

int *pointer;

这意味着你已经定义了指针,但指针还没有指向内存空间。如果您直接使用指针而不将其指向内存空间(就像您在代码中所做的那样),那么您将得到未定义的行为

可以通过以下方式之一将指针指向内存空间:

1) 指向静态内存

int num;
int *pointer = &num;

num 是一个定义为静态的 int。所以指针可以指向num内存

2) 指向动态内存

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

指针可以指向动态内存。可以使用malloc() 分配动态内存,当内存变得无用时,我们可以使用free(pointer)

释放内存

关于c - 将 int 放入 int 指针中会在 C 中产生运行时错误。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14687145/

相关文章:

android - 为 fopen 更改 Android 中文件的权限

c - 如何在 Eclipse 上创建 C 类

c - 给指针赋值时遇到问题

c - 我怎么知道指针中有多少空闲位?

c++ - c++中不使用全局变量的递归函数中的加法次数

c - C中的原子结构?

c - 自动微分Matlab Coder生成的C代码

c函数返回nan而不是double

c++ - 将一个二维数组分配给另一个

c - 在指针上调试 C 程序时出错