C语言学习018:strdup复制字符串数组
在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 }