C中的指针功能行为不当

时间:2014-09-13 15:42:22

标签: c

void allocateMemory(char* pString, int length) { 
    pString = (char*)malloc(length); 
} 

void test() { 
    char* pString = NULL; 
    allocateMemory(pString, 20); 
    strcpy(pString, "Hello world."); 
} 

为什么这个程序会崩溃?我使用malloc分配了内存。当函数返回时,我会期望pString指向堆上的内存?这不是发生了什么事吗?似乎pString仍然指向null?

我们不能将地址更改为指针所指向的位置吗?

2 个答案:

答案 0 :(得分:3)

在C中,它应该是

void allocateMemory(char** pString, int length) { 
    *pString = (char*)malloc(length); 
}

void test() { 
    char* pString = NULL; 
    allocateMemory(&pString, 20); 
    strcpy(pString, "Hello world."); 
} 

答案 1 :(得分:0)

在您的代码中,您使用pass by value方法传递pString,因此传递的是pString的内容为NULL。