1、定义、初始化
数组的地址等于其首个元素的地址
[存储类型] 数据类型 标识符 [行下标] [列下标]
2、元素引用
数组名称【行下标】【列下标】
3、存储形式
顺序存储,按行存储
4、深入理解二维数组
#include <stdio.h> #include <stdlib.h> #define ROW 2 #define COL 3 static void initDoubleArray() { // int arr[ROW][COL]; // int arr[ROW][COL] = {{1,2,3},{4,5,6}}; //标准初始赋值 int arr[ROW][COL] = {1, 2, 3, 4, 5, 6}; // 按内存分配顺序赋值 int arr2[][COL] = {10, 2, 3, 4, 5, 6}; // 按内存分配顺序赋值 省略行 int i, j; printf("%p \n", &arr2); for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { // arr[i][j] = j; // printf("%d ", arr2[i][j]); printf("%p --> %d\n ", &arr2[i][j], arr2[i][j]); } printf("\n"); } } // 二维数组行列翻转 static void reverseDoubleArr() { int arrA[ROW][COL] = {1, 2, 3, 4, 5, 6}; // 按内存分配顺序赋值 int arrB[COL][ROW]; int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { printf("%d ", arrA[i][j]); arrB[j][i] = arrA[i][j]; } printf("\n"); } for (i = 0; i < COL; i++) { for (j = 0; j < ROW; j++) { printf("%d ", arrB[i][j]); } printf("\n"); } } // 求最大值及其所在的位置 static void findMaxValue() { int arr[ROW][COL] = {1, 2, 132, 43, 5, 6}; int i, j; int max = arr[0][0], maxRol = 0, maxCol = 0; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { if (max < arr[i][j]) { max = arr[i][j]; maxRol = i; maxCol = j; } } } printf("最大值==>%d 所在行 ==> %d 所在列 ==>%d", max, maxRol, maxCol); } // 求各行与各列的和 static void sum() { // 给定一个4行3列的二维数组,求行与行的和,列与列的和,以及 总和 // 解析:可以使用5行4列的二维数组,最后一个值分别存放计算结果,[4][3]存放总和 int arr[5][4] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}}; for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { arr[4][3] += arr[i][j]; arr[4][j] += arr[i][j]; arr[i][3] += arr[i][j]; } } for (int i = 0; i < 5; i++) { for (int j = 0; j < 4; j++) printf("%4d ", arr[i][j]); printf("\n"); } } int main(void) { initDoubleArray(); // reverseDoubleArr(); //findMaxValue(); exit(0); }
字符数组
#include <stdio.h> #include <stdlib.h> // 字符数据常用函数库为 <string> #include <string.h> #define STR_SIZE 32 int main(void) { /** * 字符串定义方式 * 存储类型 数据类型 标识符 下标 * char str[] = "hello"; * char str[6] = {'h','e','l','l','o'} */ // char str[STR_SIZE] = {'a', 'b', 'c'}; char str[] = "hello"; char str1[7] = {'h', 'e', 'l', 'l', 'o', '1'}; // sizeof strlen 函数区别 // strlen 仅统计字符数组尾零之前的字符数 // sizeof 则统计整个字符数组所占用的空间大小,包含尾零 // printf("%d %d ", strlen(str1), sizeof(str1)); // 字符串连接 strcat // printf("%s ", strcat(str, "world")); // printf("%s ", strncat(str, "world", 2)); /** * 字符串比较 * strcmp 以 ASCII 码值的方式对字符串进行比较 , 返回 -1 0 1 * strncmp 以 ASCII 码值的方式对字符串的指定位数 进行比较 , 返回 -1 0 1 */ // printf("%d ", strcmp(str, str1)); // printf("%d ", strncmp(str, str1,5)); char str2[STR_SIZE]; char str3[STR_SIZE]; strcpy(str2, str1); strncpy(str3, str1, 3); puts(str1); puts(str2); puts(str3); exit(0); }
标签:arr,int,C语言,++,二维,数组,printf,COL,ROW From: https://www.cnblogs.com/shenwenbo/p/17128312.html