码迷,mamicode.com
首页 > 其他好文 > 详细

字符指针与字符串

时间:2018-07-05 00:39:28      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:地址   turn   操作   print   代码   动态   答案   字符串   return   

void getmemory(char p)
{
p=(char
) malloc(100);
strcpy(p,“hello world”);
}
int main( )
{
char *str=NULL;
getmemory(str);
printf(“%s/n”,str);
free(str);
return 0;
}会出现什么问题?
【标准答案】程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很危险。

参考网上的代码:
void getmemory(char *p)
{
p=(char ) malloc(100);
strcpy(
p,“hello world”);
}
int main( )
{
char str=NULL;
getmemory(&str);
printf(“%s/n”,str);
free(str);
return 0;
}
个人注解:
char
str=NULL;相当于定义一个字符串str,也是字符指针str。
getmemory(&str);传的是字符串地址。
char *p可看成是 (char )p意为字符串str的指针p。
p为字符串str。亦是单字符的指针str。

字符指针与字符串

标签:地址   turn   操作   print   代码   动态   答案   字符串   return   

原文地址:http://blog.51cto.com/wuweizhu/2136351

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!