📄 pointer_multi.cpp
字号:
#include "stdafx.h"
#define FORMAT "%o,%o\n"
void pointerMultiArray()
{
void pointer();//声明
//pointer();//调用
/*
// 指向二维数组的二维指针
void pointerTwo();
pointerTwo();
*/
/*
// 指向二维数组的一维指针
void pointerOne();
pointerOne();
*/
// 二维数组作为函数参数
void mulitArrayParam1(int *p, int len);
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
// *a = *(a + 0) = a[0]
mulitArrayParam1(a[0], 12); // 实际上传递的是列指针
/*
void mulitArrayParam2(int (*p)[4], int len);
mulitArrayParam2(a, 12);
void outPut(int (*p)[4]); // 4 不能缺少
outPut(a);
*/
}
// 二维数组作为函数参数,使数组a的每一个元素值增加 10
void mulitArrayParam2(int (*p)[4], int len) //void mulitArrayParam2(int a[][4], int len)
{
int row = len/4; // 3
int column = 4; // 4
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
*(*(p + i) + j) = *(*(p + i) + j) + 10;
// p + i 是二维数组a的第i行的地址 。
printf("\n");
}
}
void pointer()
{
}
// 定义指向二维数组的二维指针
void pointerTwo()
{
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4]; // 定义指向二维数组的指针变量,p指向一个包含 4 个元素的一维数组
p = a; // 初始化
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
printf("%d\t", *(*(p + i) + j)); // p + i 是二维数组a的第i行的地址 。
printf("\n");
}
}
// 定义指向二维数组的指针
void pointerOne()
{
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
// 指向多维数组的指针变量
int *p; // 定义一维指针形式,缺点不能随意输出指定位置的元素
p = a[0];
// 初始化,使p指向一个整形变量,p+1 指向的元素是p所指向的元素的下一个元素
for(; p < a[0] + 12; p++)
{
if((p - a[0]) % 4 == 0)
printf("\n");
printf("%d\t", *p);
}
printf("\n");
}
// 二维数组作为函数参数,使数组a的每一个元素值增加 1
void mulitArrayParam1(int *p, int len)
{
int *temp;
temp = p;// 保存
int *end = p + len ;
for(; p < end; p++)
{
*p = *p + 1;
}
p = temp; // 重新初始化
for(int i = 0; i < len; i++, p++)
{
if((i - 0) % 4 == 0)
printf("\n");
printf("%d\t", *p);
}
printf("\n");
}
void outPut(int (*p)[4]) //void outPut(int a[][4])
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
printf("%d\t", *(*(p + i) + j)); // p + i 是二维数组a的第i行的地址 。
printf("\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -