指针作为函数参数的问题。
c代码如下:
main()
{
.........
char *pBuf;
test(pBuf);//从test得到新值
......
}
void test(char *buf)
{
//要改变buf指向的值
}
但是我运行程序后却报错:Segmentation fault
请大家帮帮忙看看。
[解决办法]
char *pBuf;这个没有初始化,pBuf不一定指到什么地方去了,一访问出错太正常了。将pBuf指向一个字符数组或者用malloc分配一块内存。
[解决办法]
如果要在函数中对指针动态分配内存要用指向指针的指针
因为函数体内操作的是指针的副本(_buf),其本身pBuf并没有被修改
[解决办法]
- C/C++ code
char * pBuf = NULL;test(&pBuf);void test(char **p){ *p = (char *)malloc(sizeof(char) * 32);}
[解决办法]
一句话,指针做形参或右值得一定得初始化。
[解决办法]
char*不会用的话,直接定义数组用吧,一样的。
char[1024] pBuf;