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 }

  

posted @ 2016-04-10 10:43  高效养猪倌  阅读(544)  评论(0编辑  收藏  举报