您的位置:首页 > 其它

指针与数组关系

2016-02-20 21:23 295 查看
#include "stdafx.h"

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int a[3][4]={

{1,2,3,4},

{5,6,7,8},

{9,10,11,12}

};//定义一个三行四列的矩阵

int *b;//定义一个指向int的指针

b=a[0];//将二维数组也就是矩阵的第一个位置地址给指针b。说明a【0】储存的就是个地址。

cout<<*b<<endl;//输出值为1,说明b指向的地址存储的就是矩阵的第一个元素

cout<<b<<endl;//输出为0044fac8,为第一个值的地址

cout<<a[0]+3<<endl;//输出为0044fad4,输出的是第一行中第四个元素的地址。

cout<<*(a[0]+3)<<endl;//输出为4第一行第四个元素的值

cout<<*(b+3)<<endl;//输出为4,因为b为指针,指针加数字得到的是指针指向的偏移量,\

b+3代表的是从b指向的第一个位置向后移动三个位置。也就是第四个位置

cout<<*(b+4)<<endl;//代表从数组第一个存储位置开始向后移动四个位置,也就到了第五个位置。\

这时候输出的是5,这也就证明了一点,用指针指向二维数组的话,就是沿着从左到右边,\

从上到下的位置一个个来的。

for (int i=0;i<12;i++)

cout<<*(b+i)<<endl;//这个循环就是用来挨个输出数组的元素。

cout<<b+1<<endl;//输出的是右移一个储存单位的地址。和b的值对比的话要看数组的存储类型是什么,这里是int,是四个位。地址值相减值应该为4

int c=b+1-b;

int d=sizeof(b);//指针的大小,4,sizeof用来返回字节数。字节和位数不是一回事儿,位是bit,字节是byte,8位是一个字节。\

一个英文字母占一个字节,一个汉字俩字节,1Byte=8bits。网络速度是用bps来计算的,就是bits per second,\

也就是位每秒。通信商给我们提供的1M,2M的速率都是以Mb计算的。比如家里常用的1M的网速,\

它的全称是1Mbps,就是说每秒下载1Mb的东西,换算为字节就是128KB,这个值是理论最大值,\

只有在特别理想的状况下才能达到。所以1M的网速如是下载速度在70~100KB/s都是正常的。

cout<<"d="<<d<<endl;//输出的是整形的指针的大小,为4字节。

cout<<c<<endl;// 输出为1,指针之间的加减得到的是位置的差。

cout<<a[2]+1<<endl;//输出的是第三行第二个数的地址。

cout<<*(a[2]+1)<<endl;//输出的是第三行的第二个数值,也就是10

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: