2
なぜ以下のコードでランタイムクラッシュが発生するのですか?charポインタの実行時エラーの参照解除
コード自体はあまり便利ではありませんが、charポインタへのポインタを作成し、mainの文字列リテラルを指すことで、このポインタを関数に渡して文字列を読み取ろうとすると問題が発生します。それはなぜ正確ですか?
メインではなく(コメントアウトされた)文字列の配列を作成することによって、文字列の受け渡しや読み取りに問題はありません。あなたの知識のために事前に感謝します。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* GetString(char** strs, int strsSize);
char* GetString(char** strs, int strsSize)
{
return *strs;
}
int main()
{
char** stringArr = {"ab", "abc", "abcd"};
//char* stringArr [] = {"ab", "abc", "abcd"};
char* resultStr;
resultStr = GetString(stringArr, 3);
printf("%s\n", resultStr);
return 0;
}
ポインタは配列ではありません。配列はポインタではありません。 – StoryTeller
なぜ、 'char ** stringArr = {" ab "、" abc "、" abcd "};'についての警告を出さなかったコンパイラを使用しましたか? – chux
mingw。今すぐ見てください。警告ではなくコンパイラエラーではないのはなぜですか? – Engineer999