【问题标题】:C: Use pointer to access two dimensional arrayC:使用指针访问二维数组
【发布时间】:2018-03-25 15:34:47
【问题描述】:
int main() {

char test [2][4]= {"BbBa","CBAD"} ; /*two dimensional array */
char ch = 'A'; /* match this character */
char *temp = &test; /* pointer to array */
int i=0;

if (temp[1][2] == ch){ /* if match to ch will print Yes */
    printf("Yes");
}
else{
    printf("No.");
}

getchar();
return 0;
}

大家好,这是一个关于创建指向二维数组的指针然后进行比较的问题。

在一维中,我使用temp = &test 并且它是成功的,但它不适用于二维。 如何使用指针访问数组内容? 谢谢。

【问题讨论】:

  • char*temp 的错误类型。你的编译器应该警告你。
  • 尝试char *temp = &test[0][0]; 创建指向第一个字符串的指针或temp = &test[1][0]; 指向第二个字符串。使用if (temp[2] == ch) 访问这将访问temp 指向的第三个字符。请记住,空终止符没有空间(请参阅下面的注释)。 char test [2][4]= {"BbBa","CBAD"} ; 是错误的,因为没有空间用于以 NULL 结尾的字符串。您必须留出空间,如 char test [2][5]= {"BbBa","CBAD"} ; 中的第五个字符用于终止 NULL。

标签: c pointers multidimensional-array comparison


【解决方案1】:

您需要将temp 声明为指向数组的指针:

char (*temp)[4] = test;

这是有效的,因为在大多数情况下,数组被转换为指向其第一个元素的指针。由于test 是一个大小为2 的char[4] 数组,指向它的指针是char(*)[4] 类型。

【讨论】:

  • 哦!有用!谢谢!!我有另一个问题。如果在函数中创建指针怎么办?例如 functionA (char test){ (*temp)[4] = test ; } 字符测试 [2][4]= {"BbBa","CBAD"} ;不同级别的二维数组和指针有什么不同吗?谢谢。
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 2013-02-13
  • 2016-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多