【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
生活随笔
收集整理的這篇文章主要介紹了
【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、二維數組
- 1、二維數組聲明及初始化
- 2、二維數組遍歷
- 3、二維數組排序
- 二、完整代碼示例
一、二維數組
前幾篇博客中 , 介紹的是指針數組 ;
指針數組 的 結構特征 是 , 數組中的每個元素 , 即每個指針變量 可以 指向不同大小的 內存塊 ;
二維數組 與 指針數組 的結構不同 , 二維數組 的 內存結構 是整齊的連續的 內存塊 , 每個 一維指針 指向的內存塊 的大小都是相同的 , 并且這些內存塊 還是連續的 ;
1、二維數組聲明及初始化
二維數組聲明及初始化 :
// I. 二維數組char array[4][10] = {"abc", "123", "258", "sfd"};2、二維數組遍歷
二維數組遍歷 :
// II. 打印二維數組中的字符串for(i = 0; i < num; i++){// 使用數組下標形式訪問printf("%s\n", array[i]);// 使用指針訪問//printf("%s\n", *(array + i));}3、二維數組排序
二維數組排序 : 對二維數組進行排序 , 不能單純的交換指針指向 , 二維數組是一塊整體連續的內存 , 必須對內存中存儲的實際數據進行整體位置交換 ;
// III. 二維數組排序// 對 指針數組 進行排序 , 排序依據是 指針 指向的數據對比for(i = 0; i < num; i++){for(j = i + 1; j < num; j++){// 核心邏輯 : 如果 array[i] 大于 array[j]// 就交換兩個元素if(strcmp(array[i], array[j]) > 0){// 交換 i, j 位置的指針指向的內存數據strcpy(tmp, array[i]);strcpy(array[i], array[j]);strcpy(array[j], tmp);}}}二、完整代碼示例
完整代碼示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {// 循環控制變量int i = 0, j = 0;// 二維數組中的一維數組個數int num = 4;// 排序時 , 交換指針變量時的臨時變量 , 存儲指針指向的內存所存儲的數據char tmp[10];// I. 二維數組char array[4][10] = {"abc", "123", "258", "sfd"};// II. 打印二維數組中的字符串for(i = 0; i < num; i++){// 使用數組下標形式訪問printf("%s\n", array[i]);// 使用指針訪問//printf("%s\n", *(array + i));}// III. 二維數組排序// 對 指針數組 進行排序 , 排序依據是 指針 指向的數據對比for(i = 0; i < num; i++){for(j = i + 1; j < num; j++){// 核心邏輯 : 如果 array[i] 大于 array[j]// 就交換兩個元素if(strcmp(array[i], array[j]) > 0){// 交換 i, j 位置的指針指向的內存數據strcpy(tmp, array[i]);strcpy(array[i], array[j]);strcpy(array[j], tmp);}}}// IV. 打印二維數組中的字符串printf("\nSort:\n");for(i = 0; i < num; i++){// 使用數組下標形式訪問printf("%s\n", array[i]);// 使用指針訪問//printf("%s\n", *(array + i));}// 命令行不要退出system("pause");return 0; }執行結果 :
總結
以上是生活随笔為你收集整理的【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【每日随笔】使用 you-get 获取网
- 下一篇: 【C 语言】二级指针作为输入 ( 二维数