直截了当地说,
我希望字符指针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];
附注:我尝试了各种组合的*
、**
等,但似乎都不起作用。
使用其地址:
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]
是char
类型的,而p
是char *
类型,它持有一个地址。要获取变量的地址,请在其前面加上&
。
指针上的*
运算符反过来。如果您想要得到'T'
,可以使用:
char theT = *p;
还有另一种获取它的方法。
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 倍的位置!将 if 部分更改如下
if(a[i][j] == 'T' ) {
p = (char *) &a[i][j];
i = 4; break;
}
a[i][j]
是char
类型,因此&a[i][j]
是更简单的方式,记得[]
的优先级高于&
,所以不需要加上()
。你需要其他技巧吗?还是有其他问题? - Grijesh Chauhan*
和**
,应该尝试一些&
的组合。 ;) - Christian Rau