gpt4 book ai didi

c - 为什么 printf 有助于防止以下代码中的段错误?

转载 作者:行者123 更新时间:2023-11-30 19:37:08 24 4
gpt4 key购买 nike

#include<stdio.h>
#define NUMBER_OF_CHARS 256

typedef struct Frequency Frequency;
struct Frequency {
// Frequency value:
int v;
};

typedef struct Context Context;
struct Context {
Frequency table[NUMBER_OF_CHARS];
};

int main(){
Context* x;
(x->table[0]).v=10;
//printf("%d\n",(x->table[0]).v);
}

如果我注释掉 printf,我运行该程序就会出现段错误;如果我使用 printf 运行程序,那么我将得到值 10。为什么会发生这种情况?

最佳答案

如上面注释中所述,您使用的是 x 变量,它是一个指针且未分配。您可以使用以下内容:

int main(){
Context x; // you are allocated on the stack a Context value
x.table[0].v=10; // set the Frequency of first item
//printf("%d\n",(x.table[0].v);
return (0);
}

而不是:

int main(){
Context* x;
(x->table[0]).v=10;
//printf("%d\n",(x->table[0]).v);
return (0);
}

关于c - 为什么 printf 有助于防止以下代码中的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40253085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com