在C語言學習005:不能修改的字元串中我們知道字元串是存儲在常量區域的,將它賦值給數組實際是將常量區的字元串副本拷貝到棧記憶體中,如果將這個數組賦值給指針,我們可以改變數組中的元素,就像下麵那樣 但是現在我們不想讓指針可以修改字元串數組的中的元素,而又可以得到字元串中的元素,那麼我麽需要再拷貝一份字元 ...
在C語言學習005:不能修改的字元串中我們知道字元串是存儲在常量區域的,將它賦值給數組實際是將常量區的字元串副本拷貝到棧記憶體中,如果將這個數組賦值給指針,我們可以改變數組中的元素,就像下麵那樣
1 int main(){ 2 char s[]="hello c"; 3 char* temp=s; 4 temp[0]='a'; 5 temp[1]='b'; 6 printf("%s\n",s); 7 return 0; 8 }
但是現在我們不想讓指針可以修改字元串數組的中的元素,而又可以得到字元串中的元素,那麼我麽需要再拷貝一份字元串數組的元素的副本,然後把地址給到指針,就可以通過strdup實現
1 int main(){ 2 char s[]="hello c"; 3 char* temp=strdup(s); 4 temp[0]='a'; 5 temp[1]='b'; 6 printf("%s\n",s); 7 return 0; 8 }