i wrote a small prog :
1 #include<stdio.h>
2 main(){
3 char* str = "string";
4 *str = 'k';
5 printf("string is = %s\n",str);
6 }
This program gets compiled without any error or warnings, but when i run it, it gives segmentation fault. While if i rewrite the 3rd line as : char str[] = “string”; this program works perfectly fine. Can anyone please let me know what is the issue here ??? What is the difference between these two different ways of writing the 3rd line. Any help will be greatly appreciated. thanks.
declares a pointer which points to an area of memory where the string
"string"is stored; it’s undefined behavior to write in this area of memory, and it usually results in a crash.Instead, you should use:
which declares a string local to your function, that is initialized to the value
"string". Since the memory you are using for this string is local to your procedure you can alter it however you want.