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 *保持同區域