数组是不是指针(指针与数组)
数组是不是指针(指针与数组)int a[]={5 6 2 4 7};{a为a数组的起始位置p指向a的首地址,则a[i] *(p i) *(x i)和p[i]具有相同的作用 即访问数组的i 1个元素int main()
数组与指针
数组的指针是指数组在内存中的起始位置,数组元素的地址是指数组元素在内存中的起始位置。
一维数组的数组名为一维数组的指针 即起始位置。
int a[5];
a为a数组的起始位置
p指向a的首地址,则a[i] *(p i) *(x i)和p[i]具有相同的作用 即访问数组的i 1个元素
int main()
{
int a[]={5 6 2 4 7};
int * p;
p = a;
cout<<"a[3]的值" <<a[3]<<endl;
cout<<"*(p 3)的地址"<<*(p 3)<<endl;
cout<<"*(a 3)的地址"<<*(a 3)<<endl;
return 0;
}
二维数组与指针
a 1 按行移动一次 a[0] 1按列移动一次
#include <iostream>
using namespace std;
int main()
{
int a[3][2]={{5 6} {2 4} {7 2}};
int * p;
int n = sizeof(a)/sizeof(int);
cout<<"a= "<<a<<" a 1="<<a 1<<endl;
cout<<"a[0]= "<<a[0]<<" a[0] 1="<<a[0] 1<<endl;
return 0;
}
行指针——存储行地址的指针变量
基本形式:
<存储类型> <数据类型> (*<指针变量名>)[表达式];
int a[2][3];
int (*p)[3]; //常量数据表示指针加1,移动几个数据
#include <iostream>
using namespace std;
int main()
{
int a[3][2]={{5 6} {2 4} {7 2}};
int (*p)[2];
p=a;
int n = sizeof(a)/sizeof(int);
cout<<"a= "<<a<<" a 1="<<a 1<<endl;
cout<<"p= "<<p<<" p 1="<<p 1<<endl;
cout<<"a[1][1]= "<<a[1][1]<<" p[1][1]="<<p[1][1]<<endl;
return 0;
}
二维数组遍历的几种方式
#include <iostream>
using namespace std;
int main()
{
int a[3][2]={{5 6} {2 4} {7 2}};
int (*p)[2];
p=a;
int n = sizeof(a)/sizeof(int);
int m = sizeof(a)/sizeof(a[0]);
for(int i =0;i<m;i )
{
for(int j=0;j<n/m;j )
{
cout<<a[i][j]<<" ";
cout<<p[i][j]<<" ";
cout<<*(*(p i) j)<<" ";
cout<<*(*(a i) j)<<" ";
}
cout<<endl;
}
return 0;
}