私は以下のプログラムを持っています
void swap(char **s1,char **s2);
int main()
{
char *list[] = {
"Das",
"Kannan",
"Rajendran",
"Shahul"
};
printf("Before swap list[0] = %s,list[1] = %s\n",*list[0],*list[1]);
swap(&list[0],&list[1]);
printf("After swap list[0] = %s,list[1] = %s\n",*list[0],*list[1]);
return 0;
}
void swap(char **s1,char **s2)
{
char *t;
t = *s1;
*s1 = *s2;
*s2 = t;
}
list[0] と list[1] のアドレスを交換しようとしています。
Visual Studio 2008 は、このプログラムの実行中 (デバッグ開始中) にエラーを生成しています。発生したエラーは
ConsoleApp.exe の 0x1029984f (msvcr90d.dll) で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00000044。
コンパイル エラーはありません。
使用されているポインターへのポインターが正しく機能しない理由を教えてください。void swap(char *s1,char *s2)
また、なぜうまくいかなかったのか知りたいです
。