私は私の人生のために私が理解できない基本的な問題があります。 Cを新しくするので、私に同行してください。C - スタティックの配列にアクセス
まず私は、構造体の配列を作成します。私は、それら
rulelist[policy_count].in = strsep(&temp, delims);
rulelist[policy_count].out = strsep(&temp, delims); etc...
に値を割り当てる
struct rule {
int *in; /* ingress flag */
int *out; /* egress flag */
char *actionvalue; /* actionvalue BLOCK or UNBLOCK */
char *proto; /* protocol e.g. UDP TCP ICMP */
char *ip_src; /* source and dest address */
int *srcport; /* src port */
char *net_src; /* source and dest netmask */
char *ip_dst; /* source and dest address */
int *dstport; /* dst port */
char *net_dst; /* source and dest netmask */
} rulelist[10];
をそして私はその問題
printk("%s", rulelist[policy_count].in);
せずにアクセスすることができますしかし、私が配列にアクセスするには、あとでコードiそれはNULLポインタをderefrencingされるようにnは別の関数..
printk("%s", rulelist[policy_count].in);
は、クラッシュします。
私は割り当ての代わりに初期化について多くのことを読んだが、それぞれの例が異なり、私はそれをよく理解できないようだ。
私はすぐにそれにアクセスして別の機能ではできないことも理解できません。構造体はグローバルに宣言されているため、スコープの問題は考えません。
おかげ
すべてのコンパイラ警告を有効にして、例外なくコンパイルしてください(たとえば、-W -Wall -Wextra -pedantic -Wwrite-strings')。警告を無視しないでください。 –