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) = '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 *保持同区域
赞 (0)