C语言之字符数组在if{}里面赋值给char *引发的问题
【摘要】 1 问题
我的buff在if{}里面,然后对buff进行内存操作,最后赋值给char *类型的url,发现url最后没有得到数据
如下代码
#include <stdio.h>#define TRUE 1 void set_value(char *p){ *p = 'c'; *(p + 1) = 'h'; *(p + 2) = 'e'; *(p + 3) =...
1 问题
我的buff在if{}里面,然后对buff进行内存操作,最后赋值给char *类型的url,发现url最后没有得到数据
如下代码
#include <stdio.h>
#define TRUE 1
void set_value(char *p)
{
*p = 'c';
*(p + 1) = 'h';
*(p + 2) = 'e';
*(p + 3) = 'n';
}
int main()
{
char *url = NULL;
if (TRUE)
{
char buff[10] = {0};
set_value(buff);
url = buff;
printf("first url is %s\n", url);
}
//具体操作url
printf("second url is %s\n", url);
return 0;
}
我把buff定义在if{}里面,然后在实现一个函数操作buff,然后在里面赋值给url,
然后在{}外面再操作url发现url是NULL的,但是我单独这样写个Demo这个url又不为NULL
2 解决办法
后面再做了优化,把char buff[10] = {0}放在if外面
int main()
{
char *url = NULL;
char buff[10] = {0};
if (TRUE)
{
set_value(buff);
url = buff;
printf("first url is %s\n", url);
}
//具体操作url
printf("second url is %s\n", url);
return 0;
}
3 总结
一般字符数组赋值给char *,我们最好把字符数组和char *保持同区域
文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。
原文链接:chenyu.blog.csdn.net/article/details/92025933
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)