对于指针变量,我们要区分指针变量本身的地址值,和其地址指向的具体值,也就是要熟悉指针变量特别是二级指针变量的解引用机制:
int a=17;//变量int *p1 = &a;// 一级指针变量int **p2 = &p1;// 二级指针变量cout<
以上内容会输出:
170012FF440012FF4417
我们知道,用一个一级指针变量做参数,可以与其他函数共享共内在空间,可以修改指针变量指向的具体值,但如果想更新一个指针变量本身的内存地址值,则其参数必须是一个二级指针变量,解引用后可以得到一个一级指针变量:
#include using namespace std;void GetMemory(char *p1, char **p2, int num){ *p1 = 'b';//*pa是p1的解引用,是一个具体值 *p2 = (char *)malloc(sizeof(char) * num); // *p2是p2的解引用,还是一个指针变量 strncpy(*p2,"hello,world