您的位置:首页 > 其它

指针

2015-09-03 17:14 169 查看
一、指针是什么?

指针是一个变量,该变量的值是另一个变量的地址

变量int *P=&aint a=5
变量值0x35df5
变量地址0x63250x53df
指针变量p的值就是变量a的地址。

二 指针类型

指针所指向变量的类型就是指针的类型

2,有三个不同的变量:请问右边的三个运算有何不同

int A,*PI=&A; PI++; 地址增加两个字节

Char B,*PC =&B; PC++; 地址增加一个字节

Float C,*PF=&C; PF++; 地址增加两个字节

指针的三个要素

1、指针指向的地址(其实就是指针的值)

2、指针指向的地址上的内容

3、指针本身的地址(其实就是指向指针的指针的值)

例 int A , *PA, **PPA;

PA=&A;

PPA=&PA;

则 **PPA=*PA=A;

*PPA=PA=&A;(*PPA、PA都是变量指针,存放的是变量的地址)

PPA=&PA;(PPA是指向指针的指针,存放的是指针的地址)

PA是整型指针,他的值是整型变量A的地址&A;

PPA是指向指针的指针;他的值是指针PA的地址&PA;

指向指针的指针整型指针变量整型变量
变量int **PPA=&PAint *PA=&Aint A=5
变量的值0x580X435
变量的地址0X740X580X43
void GetMemory2(char **p, int num)//char **p是指向指针的指针存放的是一个指针的地址

{

*p = (char *)malloc(sizeof(char) * num);//(*p)往变量p所存的值所指向的地址赋值 即往上表中的0x58这个地址赋值、即改变指针变量的值 改变str的

//指向。最终str将指向malloc所返回的地址空间

}

void Test2(void)

{

char *str = NULL;

GetMemory2(&str, 100); //
注意参数是&str(指针的地址),而不是str(指针的值)

strcpy(str, "hello");

cout<< str << endl;

free(str);

}
解析:如果非得要用指针参数去申请内存,那么应该改用“ 指向指针的指针”.由于“ 指向指针的指针”这个概念不容易理解,我们可以用函数返回值来传递动态内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: