seo竞价网站建设,ftp服务器怎么搭建,做网站网站条件,游戏登录器列表更新网站建设指针(*)、取地址()、解引用(*)与引用()
C 提供了两种指针运算符#xff0c;一种是取地址运算符 #xff0c;一种是间接寻址运算符 *。
指针是一个包含了另一个变量地址的变量#xff0c;您可以把一个包含了另一个变量地址的变量说成是指向另一…指针(*)、取地址()、解引用(*)与引用()
C 提供了两种指针运算符一种是取地址运算符 一种是间接寻址运算符 *。
指针是一个包含了另一个变量地址的变量您可以把一个包含了另一个变量地址的变量说成是指向另一个变量。变量可以是任意的数据类型包括对象、结构或者指针。
指针与取地址
例程
int main() {int num 3;int* p num; // 将变量num的地址取出来存到指针p中printf(%d 的地址是 %p\n, num, p);return 0;
}输出
3 的地址是 0x7ffeefbff3ac上面int* p定义了一个指针p这个指针指向的地址所存放的变量的数据类型是int在本例程中即是指向int型变量num而p的值即是变量num的地址。
而num中的是取地址操作符当作用于一个对象上时它返回了该对象的地址比如例程中的num即是为变量num的地址。
解引用与指针赋值
例程
int main(){int num 7; int* p num; printf(数值%d所在的地址是 %p\n, num, p); printf(指针p所指向的地址为 %p , 该地址上所保存的值为%d\n, p, *p); *p 100; printf(指针p所指向的地址为 %p , 该地址上所保存的值为%d\n, p, num); return 0;
}输出
数值7所在的地址是 0x7ffeefbff3b8
指针p所指向的地址为 0x7ffeefbff3b8 , 该地址上所保存的值为7
指针p所指向的地址为 0x7ffeefbff3b8 , 该地址上所保存的值为100注意这里*操作符为解引用操作符它返回指针p所指的对象的值注意不是地址。
我们可以对*p赋值对左值赋值从而改变p所指的地址上所保存的值从而改变此地址所存储的变量num的值。上面num的值变为100
当然我们也可以给指针p赋值使其指向另外一个地址这样就改变了在解引用时获取的左值
int main(void)
{ int num 7, another -5; int *p num; p another; printf(%d\n, *p);//此时p指向了another所以输出了another的值即-5 return 0;
} 输出
-5引用
最通俗的解释引用就是起别名。
引用在C中没有在C中才有。 int main()
{ int val 7, val2 999; int refval val, refval2 val2; //引用必须要初始化使其绑定到一个变量上 //修改引用的值将改变其所绑定的变量的值 refval -12; printf(%d %d\n, val, refval);//-12refval的值和val一样 //将引用b赋值给引用a将改变引用a所绑定的变量的值 //引用一但初始化(绑定)将始终绑定到同一个特定对象上无法绑定到另一个对象上 refval refval2; printf(%d %d\n, val, refval);//999 return 0;
}
输出
-12 -12
999 999总结
*操作符 定义一个指针 int* p;将一个指针地址解引用得到改地址所存的值 cout *p endl;操作符 取地址将某个变量在内存中所存放的地址拿到 cout num endl;引用进行引用可以理解为给变量起别名作用在引用上的所有操作事实上都是作用在该引用所绑定的对象上。 int val 7;
int refval val;Ref:
https://www.runoob.com/cplusplus/cpp-pointer-operators.html