簡體   English   中英

關於指向 C 中的字符串數組的指針有問題

[英]Having Trouble about pointer to a string array in C

char*** get_func(int size, char** arr) {
    int i, num;
    char*** ans = (char***)malloc(size*sizeof(char**));
    for(i = 0; i < size; i++) {
        scanf("%d", &num);
        *(ans + i) = arr + (num - 1);
    }
    return ans;
}

我想實現這個 function 是,例如 arr = ["a", "b", "c"] 和 size = 2,然后 scanf 得到 arr 中元素的索引,num = 1 和 3 ,返回的 ans 應該是 ["a", "c"]。 但我不知道我的代碼中的錯誤在哪里,它只是返回[“a”,“b”]。

使用您的符號,您正在返回

[
   arr+0,
   arr+2,
]

這或多或少

[
   [ "a", "b", "c" ],
   [ "c" ],
]

首先修復返回類型,然后替換

*(ans + i) = arr + (num - 1);

*(ans + i) = *(arr + (num - 1));

固定的:

char** get_func( size_t n, char** arr ) {
   char** ans = malloc( n * sizeof( char* ) );   // Error handling missing.

   for ( size_t i=0; i<n; ++i ) {
      size_t j;
      scanf( "%zu", &j );                        // Error handling missing.
      ans[ i ] = arr[ j - 1 ];
   }
 
   return ans;
}

我還改用了更合適的size_t ,並使用了我認為更傳統的名稱。 但這與問題無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM