日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 )

發(fā)布時間:2025/6/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、二維數(shù)組內(nèi)存大小計算
  • 二、二維數(shù)組內(nèi)存大小意義





一、二維數(shù)組內(nèi)存大小計算



給定一個二維數(shù)組 : 該 二維數(shù)組 中有 444 個 一維數(shù)組 , 每個一維數(shù)組有 101010 個 char 數(shù)據(jù) ;

// I. 二維數(shù)組char array[4][10] = {"abc", "123", "258", "sfd"};

計算二維數(shù)組大小 : 404040 字節(jié) ;

// 求二維數(shù)組總的內(nèi)存大小int array_len = sizeof(array);

計算一維數(shù)組大小 : 該 二維數(shù)組 中有 444 個 一維數(shù)組 , 每個一維數(shù)組有 101010 字節(jié) ;

// 求二維數(shù)組中的一位數(shù)組的內(nèi)存大小int array_0_len = sizeof(array[0]);

計算二維數(shù)組中有多少個一維數(shù)組 : 444 個 ;

// 求二維數(shù)組中一維數(shù)組個數(shù)int len = sizeof(array) / sizeof(array[0]);

代碼示例 :

#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {// 循環(huán)控制變量int i = 0, j = 0;// 二維數(shù)組中的一維數(shù)組個數(shù)int num = 4;// 排序時 , 交換指針變量時的臨時變量 , 存儲指針指向的內(nèi)存所存儲的數(shù)據(jù)char tmp[10];// I. 二維數(shù)組char array[4][10] = {"abc", "123", "258", "sfd"};// 求二維數(shù)組總的內(nèi)存大小int array_len = sizeof(array);// 求二維數(shù)組中的一位數(shù)組的內(nèi)存大小int array_0_len = sizeof(array[0]);// 求二維數(shù)組中一維數(shù)組個數(shù)int len = sizeof(array) / sizeof(array[0]);// 打印上述大小printf("array_len = %d, array_0_len = %d, len = %d\n", array_len, array_0_len, len);// 命令行不要退出system("pause");return 0; }

執(zhí)行結(jié)果 :





二、二維數(shù)組內(nèi)存大小意義



編譯器操作 二維數(shù)組 時 , 只關(guān)心 二維數(shù)組 的整體內(nèi)存結(jié)構(gòu) , 下面的二維數(shù)組 有 444101010 列 ;

// I. 二維數(shù)組char array[4][10] = {"abc", "123", "258", "sfd"};

當(dāng)使用數(shù)組下標(biāo)進行遍歷時 ,

array[2]

相當(dāng)于

*(array + 2)

由此可以看出 , array 的每個 跳轉(zhuǎn)步長 是 101010 字節(jié) , array + 2 相當(dāng)于跳了 202020 字節(jié) , 才能訪問到第 333 個元素 array[2] ;


正是由于 上述 跳轉(zhuǎn)步長 的問題 , 在函數(shù)中 , 形參 必須是 二維數(shù)組 , 不能是 二維指針 ;

/** 此處遍歷時 , 注意指針的步長 ,* 傳入一個二級指針 char ** , 會出錯* 如果傳入 二級指針 ,* array[i] 等同于 *(array + i)* array 的步長是 10*/ int print_str(char array[4][10], int num) {// 循環(huán)控制變量int i = 0;// 判斷指針合法性if(array == NULL){printf("array == NULL\n");return -1;}// 打印二維數(shù)組中的字符串for(i = 0; i < num; i++){// 使用數(shù)組下標(biāo)形式訪問printf("%s\n", array[i]);// 使用指針訪問//printf("%s\n", *(array + i));}return 0; }

總結(jié)

以上是生活随笔為你收集整理的【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。