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)