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) = 数组大小;
那么想想对数组名去地址和对数组取地址又有上面不一样呢?
我们都知道数组名解释为第一个元素首地址,而对数组名取地址时得到的是整个数组的地址。
#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) = 数组大小;
那么想想对数组名去地址和对数组取地址又有上面不一样呢?
我们都知道数组名解释为第一个元素首地址,而对数组名取地址时得到的是整个数组的地址。
相关文章推荐
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- 数组,指针与函数之间的关系
- NDK探究之旅《五》——指针和数组之间的关系
- 指针与函数及指针与数组之间的关系
- 指针数组和数组指针之间关系
- c/c++(疑3) C语言指针与数组之间关系
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- 数组与指针之间的微妙关系
- 指针与数组,指针与函数之间的关系
- 数组<->指针<->动态数组之间的关系
- 数组 与 指针 之间的关系 分析
- 指针与数组之间的关系与转换
- C语言指针回顾(四) 指针与数组之间的关系
- 数组<->指针<->动态数组之间的关系
- c语言,指针和数组大小之间的关系
- c/c++(疑4) 指针数组和数组指针之间关系
- 数组和指针的比较和关系以及区别
- 详细解读指针和数组的关系
- 指针和数组关系初探
- 再谈C语言中数组和指针之间的互操作