您的位置:首页 > 其它

4.3 指针,数组和指针算术之间关系

2013-11-15 13:38 281 查看
指针名在C和C++中解析为地址,C++中也将数组名解析为地址

#include <iostream>

using namespace std;

int main()

{

double wags[3]={1.0, 2.0,3.0};

short stacks[3] = {3,2,1};

//c++将数组名解析为地址

double* wg = wags;

short* wgs = &stacks[0];//wgs = &stacks[0];

cout <<"wg ="<<wg<<endl<<"*wg="<<*wg<<endl;

//wg = wg+1;

cout<<"wg+1 = "<<wg+1<<endl ;

cout<< "*(wg+1)= "<< *(wg+1)<<endl <<"*wg+1 ="<<*wg+1<<endl;//值相同

system("pause");

return 0;

}

注意;指针变量加1,增加其类型的字节数

由上面可知:由数组表示总是可以转换为指针

arry[i] = *(arry+i);

同理也可知道,指针表示的时候,也可以使用数组来表示。

point[i] = *(point+i);



那么数组和指针又有上面区别呢?

区别一:

指针的值可以修改,而数组名是常量

point = point+1 //ok 指针可以增加

arry = arry+i // error

区别二:

当使用sizeof指针和数组也是有区别的,

sizeof(point) = 4 ;

sizeof(arry) = 数组大小;



那么想想对数组名去地址和对数组取地址又有上面不一样呢?

我们都知道数组名解释为第一个元素首地址,而对数组名取地址时得到的是整个数组的地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: