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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章