#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.为什么会发生?
答案 0 :(得分:0)
如上面的注释中所述,您使用的是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);
}