【发布时间】:2020-12-18 16:07:14
【问题描述】:
我看过很多关于在 C 中访问二维数组的在线资源,但都只显示一个答案*( *(arr + i) + j))
但不幸的是,它给了我这个错误
error: invalid type argument of unary ‘*’ (have ‘int’)
27 | printf("%d ",*(*(arr + i) + j));
我的代码:
void pointer_string_array_indexing(char *arr){
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 4; ++j)
{
//printf("%c : %d ",*(arr+4*i+j),(arr+4*i+j)); //this will give correct answer
printf("%c ",*( *(arr + i) + j)); // compilation error
}
printf("\n");
}
}
int main(){
char S[][4] = {"abc","efg"};
pointer_string_array_indexing(S);
return 0;
}
我知道这是一个非常有名且重复的问题,但请提供解决方案的代码 sn-p。 我用的是 Ubuntu-20(不过没关系)
【问题讨论】:
-
请分享其中的一些“许多资源”(以便我们向您展示您在哪里误解了它们)。并分享您的错误。
-
@user3121023 是的,它正在工作,你能否详细说明你的答案为什么它工作以及我的代码哪里做错了?
-
快速浏览一下,显示来源相互复制。但无论如何,没有一个来源给出如何将二维数组传递给函数的示例,因此您需要更好的来源。
-
*( *(arr + i) + j)是一种超级复杂的写法arr[i][j]。
标签: c pointers multidimensional-array