1 问题
我的buff在if{}里面,然后对buff进行内存操作,最后赋值给char *类型的url,发现url最后没有得到数据
如下代码
#include <stdio.h>
#define TRUE 1void 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);}//具体操作urlprintf("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);}//具体操作urlprintf("second url is %s\n", url);return 0;
}
3 总结
一般字符数组赋值给char *,我们最好把字符数组和char *保持同区域