指针传递

 

 

 1 void vGetMemory(char * pc)
 2 {
 3     pc = (char *)malloc(100);
 4 }
 5 
 6 void vTest(void)
 7 {
 8     char * pcStr = NULL;
 9     vGetMemory(pcStr);
10     strcpy(pcStr, "hello world");
11     printf(pcStr);
12 }

这段代码不能够运行,会奔溃掉。

因为vGetMemory是值拷贝,导致了pcStr一直都是NULL。

 

改为:

 1 #include <iostream>
 2 #include <malloc.h>
 3 using namespace std;
 4 
 5 void vGetMemory(char ** ppc)
 6 {
 7     *ppc = (char *)malloc(100);
 8 }
 9 
10 int main()
11 {
12     char * pcStr = NULL;
13     vGetMemory(&pcStr);
14     strcpy(pcStr, "hello world");
15     printf(pcStr);
16     return 0;
17 }

 

posted @ 2014-12-03 22:23  MDGSF  阅读(131)  评论(0编辑  收藏  举报