C++当中&和*的使用

C++是我们许多人在步入程序设计的时候的第一个入门语言。但是,这个语言当中也有好多难以理解的概念。在这里简单介绍一下两种地址符号。

在介绍这两个符号之前,我们先说明一下C++当中的两个概念,变量和地址。

变量里存在两个值,一个是变量在内存中存着的位置,也就是地址,另外一个就是这个变量的值,存在内存当中。

另外一个是地址,只记录地址信息。

符号“&”

这个符号在运算当中用于计算位运算的“且”。同时也可以对变量应用**(只能对变量应用,不能对地址使用)**,被&修饰的变量的含义是这个变量的地址。

int main()
{
    int x=5;
    int *p=&x;
    printf("%p\n",p);
}

用一个便于理解的话来说,可以理解地址符&是一个C++自带的函数,它的作用是求出一个变量的地址。

如果用&来修饰函数的形参的话,则表示直接取这个数的地址

void swap(int &x,int &y)
{
    int temp;
    x=y;
    y=temp;
}
int main()
{
    int x=5,y=6;
    swap(x,y);
}

我们都知道,函数的形参是将实参的值拷过来,形成一个副本,在使用地址符&修饰之后,我们传过来的是这个实参的地址,而最后的结果就是,我们在函数当中,可以直接对这个实参进行修改了,比如以上这个交换函数,就是利用这个原理。

符号“*”

这个符号除了在运算上代表乘法以外,同时也可以对指针使用**(不能对变量使用)**

注:指针不能被赋值为整数,不能手动赋值,编译器会报错,面试可能会问到

#include<stdio.h>
int main()
{
    int x=5,y=6;
    int *p=x; //错误
    int *q=3; //错误
    int *o=&x; //正确
}

被“*”修饰的地址的含义是,这个地址所指向的内存位置的值,或者我们可以理解这是一个能够求出指针指向的数的值的函数。我们来看一下在函数当中的作用

void print(int *x)
{
    printf("%d\n",*x); //通过*x来读取指针x指向的值
}
int main()
{
    int x=5;
    print(&x);

    int *p=new int; //给指针p手动分配一个int类型的空间
    *p=6;           //通过*p来读取p指向的值
    print(p);
}

当函数形参是int类型指针的时候,我们传进去的,也是指针,想要读取指针所指向的内容,就需要使用指针符号修饰。虽然感觉花里胡哨的,只要明白原理,就不会被迷惑。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值