[C]char型のダブルポインタ
粗雑で申し訳ありませんが、
以下のソースをコンパイルできましたが、
うまく実行できません。
自分なりに間違いがないと思うのですが、
間違い等をご指摘頂ければ助かります。
#include <stdio.h>
void func(char **ptr) ptr[][10] か (*ptr)[] なら通る *ptr[] は通らない
{
printf("----- func -----");
printf("%s\n", *ptr);
printf("%c\n", **ptr);
putchar('\n');
}
int main(void)
{
char str[5][10] = {"AAAAA", *str[] にすると func で **ptr で通る
"BBBBB",
"CCCCC",
"DDDDD",
"EEEEE",
};
printf("----- main -----");
printf("%s\n", *str);
printf("%c\n", **str);
putchar('\n');
func(str);
return (0);
}
実行結果
----- main -----
AAAAA
A
----- func -----
Bus error (core dump)
関数への受け渡しで、型が違うというお叱りを受けますが、
コンパイルはできました。
コンパイラはCCです。
ではよろしくお願いします。
お礼
お返事ありがとうございます。大変参考になりました。 どうやら私はポインタの定義とメモリの確保をごっちゃにしていたようです。