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

Vis*_*vek 10 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];
Run Code Online (Sandbox Code Playgroud)

PS我已经尝试过的各种组合*,**等,但似乎没有任何工作.

Bar*_*chs 13

使用其地址:

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];
Run Code Online (Sandbox Code Playgroud)

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

*指针上的操作符反过来工作.如果你想要'T'退后,你可以使用:

 char theT = *p;
Run Code Online (Sandbox Code Playgroud)


Man*_*sis 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;
Run Code Online (Sandbox Code Playgroud)

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