[英]Change value in pointer string array in C
是否可以通過這種方式更改由字符串指針初始化的字符數組中的值:
char *word;
word = (char*) malloc(10 * sizeof(char));
word = "Test";
word[2] = 'w';
return 0;
執行上面的代碼時出現分段錯誤。
您的代碼中存在許多問題。
正確的代碼:
char* word;
word = malloc(10);
if(word == NULL)
{
// out of memory, error handling here
}
strcpy(word, "Test");
word[2] = 'w'; // should give "Tewt"
...
free(word);
這取決於。 如果指針指向字符串文字則不能。 如果它是一個字符數組,那么它是可能的。
在給出的代碼片段中,您使用malloc
為word
分配了內存,然后您將字符串文字分配給word
,使該word
指向Test
第一個字符,並且之前分配的內存不再被它指向並且它將導致內存泄漏。 在這種情況下,您無法通過word[2] = 'w';
修改Test
word[2] = 'w';
。 它將調用未定義的行為。
而不是word = "Test";
,使用strcpy
復制字符串
strcpy(word, "Test");
您的代碼段應該看起來更像這樣:
int maxlen = 10;
char *word;
word = malloc(maxlen * sizeof(char));
strncpy(word, "Test", maxlen);
word[2] = 'w';
return 0;
1)指針'word'正在被替換。 這會導致內存泄漏
2)文字處於只讀內存中,因此嘗試更改該內存中的任何內容都會導致seg錯誤事件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.