指针与一,二维数组

一,指针与一维数组

int a[5],*p;p=a;

指针p指向了数组a,于是可以通过下标或指针的形式访问数组元素。

下标的形式访问: 

数组下标法a[i]i=0, 1, 2, 3, 4   

指针下标法:p[i]i=0, 1, 2, 3, 4    //用指针变量名p代替数组名

指针的形式访问:

地址引用法: *(a+i)i=0, 1, 2, 3, 4   

指针引用法:*(p+i)i=0, 1, 2, 3, 4

1.1通过指针访问一维数组

1,int a[10], i;

for (i=0;i<10;i++) cin>>a[i];

for (i=0;i<10;i++) cout<

2,int a[10], i;

for (i=0;i<10;i++) cin>>*(a+i);

for (i=0;i<10;i++) cout<<*(a+i)<<" ";

3,int a[10], *p;

for (p=a;p> *p;

for (p=a;p *p <<" ";

1.2

指针与一,二维数组_第1张图片

二,二维数组

定义:

    元素类型 数组名[常量表达式1][常量表达式2]...[常量表达式n];

说明:

二维数组或多维数组的下标也都是 0 标起
每对方括号 代表 一个维度 ,不能将各个维度放在一个方括号内
二维数组中每个元素的使用和普通变量一样,只是每个元素的名称是由数组名和行列下标构成。
int s[3][4];

s[0][0]

s[0][1]

s[0][2]

s[0][3]

s[1][0]

s[1][1]

s[1][2]

s[1][3]

s[2][0]

s[2][1]

s[2][2]

s[2][3]

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

2,用指针访问二维数组:
1),在这里,指针p被定义为:指向int的指针,即,p指针认为它指向的是一个一维数组,每个元素都是int型的,共有12个。

#include
using namespace std;
int main() {
	int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
	int* p = &a[0][0];
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 4; j++)
			cout << *p++ << '\t';
	return 0;
	system("pause");
}

2),在这里,指针p将以和数组a完全相同的视角取看待二维数组。a是怎样使用的,p就是怎样使用的。*(*(p+i)+j)可替换为a[i][j]*(a[i]+j)p[i][j]*(p[i]+j)。

对p指针的理解:*p声明了p是指针;p指向了一个包含了4个整数的一维数组

#include
using namespace std;
int main() {
	int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
	int(* p)[4] = a;
	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 4; j++)
			cout << p[i][j] << '\t';
	return 0;
	system("pause");
}

你可能感兴趣的:(c++,算法,数据结构)