1.指针数组的应用:
int* qishou[2];//定义一个有两个元素的指针数组,每个元素都是一个指针变量
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int main() {
int girl[4][3] = { {173,158,166},
{168,155,171},
{163,164,165},
{167,164,172} };
int* qishou[2];//定义一个有两个元素的指针数组,每个元素都是一个指针变量
if (girl[0][0]>girl[0][1])
{
qishou[0] = &girl[0][0];
qishou[1] = &girl[0][1];
}
else
{
qishou[0] = &girl[0][1];
qishou[1] = &girl[0][0];
}
for (int i = 2; i < 12; i++) {
if (*qishou[1]>=girl[i/3][i%3])
{
continue;
}
//候选者高于第二位棋手候选士兵
//1.候选者比“冠军”矮
if (girl[i / 3][i % 3] <= *qishou[0]) {
qishou[1] = &girl[i / 3][i % 3];
}
//2.候选者比“冠军”高
else
{
qishou[1] = qishou[0];
qishou[0] = &girl[i/3][i%3];
}
}
printf("最高士兵的身高:%d,次高士兵的身高:%d\n",*qishou[0],*qishou[1]);
system("pause");
return 0;
}
2.数组指针的应用:
int (*p)[3]; //定义一个指向三个成员的数组的指针
访问元素的两种方式:
数组法: (*p)[j]
指针法: *((*p)+j)
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int main() {
int A[4][3] = { {173,158,166},
{168,155,171},
{163,164,165},
{167,164,172} };
int(*p)[3];//定义一个指向三个成员的数组指针
int* boy = NULL;
p = &A[0];
////第一种 数组下标法
//for (int i = 0; i < 4; i++) {
// for (int j = 0; j < 3; j++) {
// printf(" %d", (*p)[j]); //(*p)等同于a[0],a[0][0]等同于(*p)[0]
// }
// printf("\n");
// p++;
//}
//第二种 指针访问法
boy = &(*p)[0]; //boy=(*p);
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
printf(" %d", *(*p)+j); //*((*p)+j)=*(p[0]+j)
if (*boy>*((*p)+j))
{
boy = (*p) + j; //把地址赋给boy;
}
}
printf("\n");
p++;
}
printf("最矮的学生是:%d\n",*boy);
system("pause");
return 0;
}