cpp
基本知识## 指针与引用的区别
指定全局作用域的变量 例: 指定 使用全局变量或者局部变量
#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
}
}
另外,双冒号也常常用于在类变量内部作为当前类实例的元素进行表示 例:
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的下一个地址的值
#d
获取变量的大小int a;
int *p=&a;
printf("%d",sizeof(p));//输出4