C语言之字符数组在if{}里面赋值给char *引发的问题
生活随笔
收集整理的這篇文章主要介紹了
C语言之字符数组在if{}里面赋值给char *引发的问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 問題
我的buff在if{}里面,然后對buff進行內存操作,最后賦值給char *類型的url,發(fā)現(xiàn)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{}里面,然后在實現(xiàn)一個函數操作buff,然后在里面賦值給url,
然后在{}外面再操作url發(fā)現(xiàn)url是NULL的,但是我單獨這樣寫個Demo這個url又不為NULL
?
?
?
?
2 解決辦法
后面再做了優(yōu)化,把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 *保持同區(qū)域
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的C语言之字符数组在if{}里面赋值给char *引发的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指offer之判断二叉树是不是平衡二叉
- 下一篇: SVN之如何添加默认.a文件