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