[英]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.