私はポインターを理解するために自分の道を進んでいます。この文字列コピー機能をCで記述しました。
#include<stdio.h>
char *my_strcpy(char *dest, char *source)
{
while (*source != '\0')
{
*dest++ = *source++;
}
*dest = '\0';
return dest;
}
int main(void)
{
char* temp="temp";
char* temp1=NULL;
my_strcpy(temp1,temp);
puts(temp1);
return 0;
}
このプログラムはセグメンテーション違反を起こします。それでも変更char* temp1=NULL
すると失敗します。char* temp1
に変更char* temp1
するchar temp1[80]
と、コードは機能します。このコードchar temp1[1]
は、出力をtempとして提供する場合にも機能します。出力はtにすべきだと思っていました。なぜこのようになり、なぜエラーが発生するのですかchar* temp
。