如何使指针指向2D数组的任何数组元素?

时间:2013-04-13 08:00:34

标签: c++ c pointers

直截了当地说,

我希望字符指针p指向包含字符“T”的唯一数组元素。

char a[100][100];
char *p;

for(int i=0;i<4;i++)
  for(int j=0;j<4;j++)
    if(a[i][j] == 'T')
      p = a[i][j];

P.S。我尝试了***等的各种组合,但似乎没有任何效果。

3 个答案:

答案 0 :(得分:12)

使用其地址:

char a[100][100];
char *p;

for(int i=0;i<4;i++)
  for(int j=0;j<4;j++)
    if(a[i][j] == 'T')
      p = &a[i][j];

a[i][j]的类型为charp的类型为char *,其中包含地址。要获取变量的地址,请在其前面添加&

指针上的*运算符以相反的方式工作。如果您想要获得'T',请使用:

 char theT = *p;

答案 1 :(得分:7)

还有另一种方式来获取它

char a[100][100];
char *p;

for(int i=0;i<4;i++)
   for(int j=0;j<4;j++)
       if(a[i][j] == 'T')
           p = a[i]+j;

通过写p = a[i]+j;你实际上说,我们在一个名为 a [i] 的数组的乞讨处有一个指针,你指向的位置是 j 远离阵列的乞讨!

答案 2 :(得分:-1)

按如下方式更改if部分

  if(a[i][j] == 'T' ) {
       p = (char *) &a[i][j];
       i = 4; break;
  }