2025 資料結構 陣列

แชร์
ฝัง
  • เผยแพร่เมื่อ 21 ม.ค. 2025

ความคิดเห็น • 2

  • @billy-r3o
    @billy-r3o 5 วันที่ผ่านมา

    char *pc[10]; // array of 10 elements of 'pointer to char'
    char (*pa)[10]; // pointer to a 10-element array of char
    The element pc requires ten blocks of memory of the size of pointer to char (usually 40 or 80 bytes on common platforms), but element pa is only one pointer (size 4 or 8 bytes), and the data it refers to is an array of ten bytes (sizeof *pa == 10).
    小紅,想問一下
    1.char *pc[10] , pc 的data type 是char *還是char * [10]?
    char (*pa)[10] , pa的data type 是 char * 嗎?
    2.int[10]和int [10][8]各為一個不同的data type對嗎?
    3.int[10 ]和 int * 是不同的data type 對嗎?
    4.int ar1[2][3] = {{1, 2, 3}, {4, 5, 6}}; 和 int (*test)[3]; // 指向包含 3 個整數的一維陣列
    test 和ar1 同一個資料型態對嗎?

    • @楊舜博-m4h
      @楊舜博-m4h  5 วันที่ผ่านมา +1

      1.
      char *pc[10];
      這是宣告了一個陣列,陣列大小是10,陣列中每一個元素都是一個指向char的指標。
      pc 的型態會被認為是 char **。
      char (*pc)[10];
      這是宣告了一個指標,這個指標指向一個擁有10個char元素的陣列。
      pc 的型態會被認為是 char *[10]。
      2.
      這個問題不知道要講到多深,但是先說結論,他們是不一樣的資料型態
      但是很有趣的是
      int arr[10];
      arr == &arr == &a[0]
      int arr[10][8];
      arr == &arr == arr[0] == &arr[0] == &arr[0][0]
      3.
      這個很好舉例說明
      int (*p)[10];
      p型態是 int *[10],所以p++的時候會加上sizeof(int * 10),
      int *p;
      p的型態是 int*,所以 p++ 的時候會加上 sizeof(int)
      4.
      你是對的