int main()
{
char *x = "HelloWorld";
char y[] = "HelloWorld";
x[0] = 'Z';
//y[0] = 'M';
return 0;
}
In the above program, HelloWorld
will be in read-only section(i.e string table). x
will be pointing to that read-only section, so trying to modify that values will be undefined behavior.
But y
will be allocated in stack and HelloWorld
will be copied to that memory. so modifying y will works fine. String literals: pointer vs. char array
Here is my Question:
In the following program, both char *arr
and char arr[]
causes segmentation fault if the content is modified.
void function(char arr[])
//void function(char *arr)
{
arr[0] = 'X';
}
int main()
{
function("MyString");
return 0;
}
- How it differs in the function parameter context?
- No memory will be allocated for function parameters??
Please share your knowledge.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…