これは以前に尋ねられたことがあると思いますが、大雑把なグーグルとスタックオーバーフロー検索は答えを見つけませんでした。
#include <stdio.h>
int main() {
char a[128][1024];
strcpy(a[0], "hello");
strcpy(a[1], "foo");
strcpy(a[2], "bar");
char **b = a;
printf("%s\n", a[0]); //same as printf("%s\n", a)
printf("%s\n", a[2]+1); //print from 2nd char of 3rd string
printf("%s\n", b); //same as printf("%s\n", a), makes sense
printf("%s\n", b[0]); //segfault???
}
まず、最後のセグメンテーション違反はなぜですか?配列と同じ動作を期待しa
ます。一般化された方法でbからn番目の文字列にアクセスするにはどうすればよいですか?aとbの治療の違いは何ですか?
同様に、私が理解しているのは、のa[n]
構文糖衣です*(a+n)
。これは、ポインターと配列の両方で正しいですか?それでも、との動作が異なるようa
ですb
。
ありがとう!