例子1如下:
void getMemory(char *p,int num){
p = new char [num];
}
void main(){
char *str = NULL;
getMemory( str,100);
->这一步在调用时候只是 *p = str; p只是指向了str所对应指向的 地址,也就是修改p的内容str的内容会相应改变但是改变p本 身的地址却影响不了str。
} //所以最后结果 str 依旧指向的是NULL,并且这样做会造成内存泄漏;
例子2://通过2级指针来影响一级指针;
void getMemory(char **p,int num){
*p = new char [num];
}
void main(){
char *str = NULL;
getMemory(& str,100);
-> 传进去的是 **p = &str; 这样 *p则对应的是指向指针 str的实际位置,而不是str指针所指向的位置 !**p则对应的是指针str所指向的位置!这样我们通过给 *p 申请内存则实际上就是给str申请内存;
例子3 : // 看清一点 可以使用函数
char * getMemory(int num){
char * p = new char [num];
return p;
}
void main(){
char *str = NULL;
str =getMemory(100);
//不要忘了
delete [] str;