私のコードは、指定された行にSIGSEGVを生成していますか?私は、コンパイラの実装によって、または読み取り専用に配置してもしなくてもよい、「K」(小文字)あなたは文字列リテラルを変更しようとしている文字へのポインタ - 関数内の逆参照
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
struct node
{
int data;
struct node* next;
};
void fun1(char** head)
{
printf("FUN2---%s",*head);
//this line produces a segmentation fault
**head='k';
}
void fun(char** head)
{
printf("FUN---HEAD:%s\n",*head);
fun1(head);
}
int main()
{
char *ptr="KEWIN";
printf("PTR:%p\n",ptr);
fun(&ptr);
printf("%s",ptr);
return 0;
}
*文字列リテラル*の最初の文字を変更しようとしています。 –
...または[this one](https://stackoverflow.com/questions/164194/why-do-i-get-a-segmentation-fault-when-writing-to-a-string-initialized-with) -cha)が保護されています。 –