指针

一、指针是什么?

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


变量int *P=&aint a=5
变量值0x35df      5
变量地址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
变量的值0x580X43    5
变量的地址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);
}
解析:如果非得要用指针参数去申请内存,那么应该改用“ 指向指针的指针”.由于“ 指向指针的指针”这个概念不容易理解,我们可以用函数返回值来传递动态内存。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值