赞
踩
指针就是内存地址,所有的变量除了值之外都有相应的地址,使用&
运算符可以获得变量的地址.
int main(){
int a = 10;
cout << "a=" << a << endl << "a的地址为" << &a << endl;
}
输出如下:
a=10
a的地址为00E8FD08
我们可以使用type* p_name
的方式去定义一个指针,并为他赋予一个地址作为值,如下:
int main()
{
int a = 10;
cout << "a=" << a << endl << "a的地址为" << &a << endl;
int* p = &a;
int* ap;
ap = &a;
cout << "p=" << p << endl << "*p=" << *p << endl << "&p=" << &p << endl;
cout << "ap=" << ap << endl << "*ap=" << *ap << endl << "&ap=" << &ap << endl;
return 0;
}
输出:
a=10
a的地址为00B5FE14
p=00B5FE14
*p=10
&p=00B5FE08
ap=00B5FE14
*ap=10
&ap=00B5FDFC
这意味着如果两个指针所指向的变量是相同的,那么指针所储存的地址也是相同的.这意味着地址和变量一一对应,但是可以看见ap
和p
本身的地址并不相同.
值得注意的是:所有的实际数据类型,不管是整型,浮点型,字符型,还是其他的数据类型对应的指针的值的数据类型都是一样的,都是一个代表内存地址的16进制数,不同数据类型的指针仅有所指向的变量或者常量的数据类型不同.
int main()
{
int* ap;
double* bp;
float* cp;
char* dp;
cout << "ap:" << sizeof(ap) << " " << "int为" << sizeof(int) << endl;
cout << "bp:" << sizeof(bp) << " " << "double为" << sizeof(double) << endl;
cout << "cp:" << sizeof(cp) << " " << "float为" << sizeof(float) << endl;
cout << "dp:" << sizeof(dp) << " " << "cahr为" << sizeof(char) << endl;
return 0;
}
输出结果如下:
ap:4 int为4
bp:4 double为8
cp:4 float为4
dp:4 cahr为1
可以看到无论什么类型的指针,所占的内存大小都是4字节.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。