首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言二維字元陣列排序:strcpy 逐字元複製與指標陣列排序效能對比

     編輯:關於C語言

C 語言二維字元陣列排序:strcpy 逐字元複製與指標陣列排序效能對比

二維陣列結構

char arr[10][30] = {"aaaa","dddd","aac","bbbb","1121213"};
// 記憶體連續: arr[0] 佔 30 位元組, arr[1] 緊接其後...
// arr[i] 相當於 *(arr + i),但編譯器知道每列寬度 30

排序必須複製內容

void sort_2d(char arr[][30], int n) {
    char tmp[30];
    for (int i=0; i 0) {
                strcpy(tmp, arr[j]);
                strcpy(arr[j], arr[j+1]);
                strcpy(arr[j+1], tmp);
            }
}

與指標陣列對比

維度二維陣列 char[][30]指標陣列 char *[]
記憶體佈局連續塊,固定列寬指標陣列連續,字串分散
排序操作strcpy 複製內容交換指標
字串長度受限於列寬 (30)動態,任意長度
效能O(n² * L) 複製開銷O(n²) 僅指標交換
適用場景嵌入式固定緩衝區、小字串通用、大字串、動態分配

完整測試程式

#include <stdio.h>
#include <string.h>

void print_2d(char a[][30], int n) {
    for (int i=0; i

選擇建議

  • 字串長度固定、數量少、嵌入式環境:二維陣列簡單。
  • 字串長度不一、追求效能、需動態增刪:指標陣列 + malloc。
  • C++ 直接用 std::vector + std::sort。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved