文章目录
一、验证二维数组内存是线性的
1、打印二维数组
2、以一维数组方式打印二维数组
3、打印二维数组值和地址
二、完整代码示例
一、验证二维数组内存是线性的
验证二维数组内存是线性的 : 验证方法如下 ;
① 给二维数组赋值 , 然后 打印二维数组的值 ;
② 使用 一维数组 方式打印二维数组 ;
③ 打印出二维数组的 地址值 ;
1、打印二维数组
打印二维数组的值 , 按照顺序打印 , 这个打印顺序正好是数组的排列顺序 ;
/** * @brief print_array 打印二维数组的值 * @param array */ void print_array(int array[][3]) { // 循环控制变量 int i = 0, j = 0; printf("print array as two-dimensional array :\n"); // 打印 二维数组 值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { printf("array[%d][%d] = %d\n", i, j, array[i][j]); } } }
执行结果 :
print array as two-dimensional array : array[0][0] = 0 array[0][1] = 1 array[0][2] = 2 array[1][0] = 3 array[1][1] = 4 array[1][2] = 5
2、以一维数组方式打印二维数组
定义一个函数 , 函数接收一个 int* 形参指针 , 使用该指针访问二维数组中的元素个数 , 也可以成功访问 ;
/** * @brief print_array2 使用一维数组方式打印二维数组的值 * @param array */ void print_array2(int *array) { // 循环控制变量 int i = 0; printf("\nprint array as one-dimensional array :\n"); // 打印 二维数组 值 for(i = 0; i < 6; i ++) { printf("%d : %d\n", i, array[i]); } }
执行结果 :
print array as one-dimensional array : 0 : 0 1 : 1 2 : 2 3 : 3 4 : 4 5 : 5
3、打印二维数组值和地址
打印二维数组的元素和地址 , 其地址是连续的 ;
=/** * @brief print_array 打印二维数组的值和地址 * @param array */ void print_array3(int array[][3]) { // 循环控制变量 int i = 0, j = 0; printf("\nprint value and address :\n"); // 打印 二维数组 值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { printf("array[%d][%d] = %d , address = %d\n", i, j, array[i][j], &array[i][j]); } } }
执行结果 :
print value and address : array[0][0] = 0 , address = 6422188 array[0][1] = 1 , address = 6422192 array[0][2] = 2 , address = 6422196 array[1][0] = 3 , address = 6422200 array[1][1] = 4 , address = 6422204 array[1][2] = 5 , address = 6422208
二、完整代码示例
完整代码示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h> /** * @brief print_array 打印二维数组的值 * @param array */ void print_array(int array[][3]) { // 循环控制变量 int i = 0, j = 0; printf("print array as two-dimensional array :\n"); // 打印 二维数组 值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { printf("array[%d][%d] = %d\n", i, j, array[i][j]); } } } /** * @brief print_array2 使用一维数组方式打印二维数组的值 * @param array */ void print_array2(int *array) { // 循环控制变量 int i = 0; printf("\nprint array as one-dimensional array :\n"); // 打印 二维数组 值 for(i = 0; i < 6; i ++) { printf("%d : %d\n", i, array[i]); } } /** * @brief print_array 打印二维数组的值和地址 * @param array */ void print_array3(int array[][3]) { // 循环控制变量 int i = 0, j = 0; printf("\nprint value and address :\n"); // 打印 二维数组 值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { printf("array[%d][%d] = %d , address = %d\n", i, j, array[i][j], &array[i][j]); } } } /** * @brief main * @return */ int main() { // 声明一个 二维数组 int array[2][3]; // 循环控制变量 int i = 0, j = 0; // 赋值时使用的索引值 int index = 0; // 为 二维数组 赋值 for(i = 0; i < 2; i ++) { for(j = 0; j < 3; j++) { array[i][j] = index++; } } // 打印二维数组值 print_array(array); // 使用一维数组的方式打印二维数组的值 print_array2(array); // 打印二维数组的值和地址 print_array3(array); // 命令行不要退出 system("pause"); return 0; }
执行结果 :
print array as two-dimensional array : array[0][0] = 0 array[0][1] = 1 array[0][2] = 2 array[1][0] = 3 array[1][1] = 4 array[1][2] = 5 print array as one-dimensional array : 0 : 0 1 : 1 2 : 2 3 : 3 4 : 4 5 : 5 print value and address : array[0][0] = 0 , address = 6422188 array[0][1] = 1 , address = 6422192 array[0][2] = 2 , address = 6422196 array[1][0] = 3 , address = 6422200 array[1][1] = 4 , address = 6422204 array[1][2] = 5 , address = 6422208 请按任意键继续. . .