基本知识.md 3.1 KB

cpp基本知识

## 指针与引用的区别

函数相关

双冒号

  1. 指定作用域 前面是作用域等类名称,后面接类的成员名称 例: A,B表示两个类,A,B中都有成员numb A::numb B::numb
  2. 指定全局作用域的变量 例: 指定 使用全局变量或者局部变量

    #include <stdio.h>
    
    int count = 0; //全局变量 0
    
    void main()
    {
     
    int count = 10; //局部变量10
     
    printf("count =%d\n",count);//局部变量屏蔽了全局变量 所以输出结果是10
    {
    int count = 20;
      
    printf("count =%d\n",::count); //作用域符号指出引用全局变量0
    //::sort
    }
    }
    
  3. 另外,双冒号也常常用于在类变量内部作为当前类实例的元素进行表示 例:

    class CA {
    public:
    int ca_var;
    int add(int a, int b);
    int add(int a);
    };
     
    //作用域
    int CA::add(int a, int b)
    {
    return a + b;
    }
     
    //另外,双冒号在类变量内部作为当前类实例的元素进行表示
    int CA::add(int a)
    {
    return a + ::ca_var;
    }
    

引用和地址的区别 前者好像类似于变量别名. 无论怎么变还是那个名字, 后者是面向名字背后对应的那个人.

&符号的作用

引用声明符

给一个变量声明另一个名字,相当于别名作用? b相当于a的一个别名

int a;
int &b=a;

地址赋值运算符

& 变量名 //获得该变量在内存中的地址
Int *p=&a //定义整形指针变量,并将a的地址赋值给指针变量。

变量的地址

变量的地址就是变量在内存中的位置,可以通过&运算符来获取变量的地址

#e 获取地址 | * 获取地址中的值

int a;
int b = &a;//得到a变量申请的地址

*符号的作用

指针声明符

#d 获取变量的地址

用于声明一个指针变量,指针变量存储的是一个地址,这个地址指向的是另一个变量

#e 获取变量的地址

int a;
int *p=&a; //定义整形指针变量,并将a的地址赋值给指针变量。

#d 从地址中取值

可以从一个指针变量中获取对应的值

#e 获取地址中的值

int a;
int *p=&a;
printf("%d",*p); //输出a的值

指针函数

#d 函数返回 地址

函数的返回值是一个地址

#e 函数返回 地址

int *fun()
{
    int a=10;
    return &a;
}
int main()
{
    int *p=fun();
    printf("%d",*p);//输出10
    return 0;
}

函数参数

#d 函数参数是 地址

函数的参数是一个地址,函数内部可以通过这个地址来修改外部的变量

#e 函数参数是 地址

void fun(int *p)
{
    *p=20;
}

& 与 * 的区别

#d & 获取地址 | * 获取地址中的值

&是取地址运算符,*是取值运算符

#e & 获取地址 | * 获取地址中的值

int a;
int *p=&a;
printf("%d",*p); //输出a的值

#d 指针的运算

#e 指针的运算

int a=10;
int *p=&a;
p=p+1;
printf("%d",*p);//输出a的下一个地址的值

sizeof

#d 获取变量的大小

int a;
int *p=&a;
printf("%d",sizeof(p));//输出4