C/C++中 * 的用法
1>乘法运算
2>注释
3>指针:(最重要)
指针是指向变量的地址
简单的例子分析:
#include <iostream>
using namespace std;
int main()
{
int a = 3;
int *b = &a;
cout << "a:" << a << endl;
cout << "&a:" << &a << endl;
cout << "b:" << b << endl;
cout << "*b:" << *b << endl;
*b = 10;
cout << "a:" << a << endl;
cout << "&a:" << &a << endl;
cout << "b:" << b << endl;
cout << "*b:" << *b << endl;
}
结果:
分析:
b是a的指针,指向a的地址。(也就是a与b相连,只要修改*b的值,a的值也跟着改动)
C/C++中 & 的用法
1>位运算符
a&b
2>逻辑与 &&
if((a==0)&&(b==0)){}
3>&取变量地址
先看下面几个简单的例子:
#include <stdio.h>
int main(void)
{
int a = 0;
int *p = &a;
printf("The value is: %d\n", *p);
return 0;
}
上面代码中,指针p指向变量a的地址。在C/C++中,每个变量都有其相应的地址,通过在变量标识符前加&符号即可获得变量的地址。
那么我们这么写可以吗?int *p = &0x01000;
这显然不行。因为对于一个数值常量,它是没有地址的。而变量之所以有地址就是因为要有一个存储单元对变量进行标识(当然,变量也可以直接映射到某个寄存器)。
我们再看下面的代码:
#include "stdio.h"
int main(void)
{
int a = 0; // &a = 0x0012ff60
int *p = &*(int*)0x