我有一个指向字符的数组:
char *myStrings[40];
最终,myStrings [0]将等于“example”或类似的东西。我想查看第一个字符,看看它是否等于e。谢谢你的帮助!
答案 0 :(得分:1)
这个数组的每个元素都是一个字符串,然后考虑我们有:
char *myStrings[40] = {"Example", " 01", " - ", "Hello", ",World!\n"};
所以
myStrings[0] is equals to "Example"
myStrings[1] is equals to " 01"
...
现在,我们必须通过这种方式访问*myStrings[0]
的第一个元素
*(myStrings)[0]
或*myStrings[0]
if (*(myStrings)[0] == 'E'){
do something
}
或
if (*myStrings[0] == 'E'){
do something
}
答案 1 :(得分:1)
指针是一个变量,它将地址保存为其他值作为其值。要访问指针所占地址的值(例如其他内容),您可以取消引用带有一元'*'
的指针。
由于你有一个指针数组,你需要取消引用数组的第一个元素,例如: mystrings[0]
。使用 C - 运算符优先级,[..]
的优先级高于'*'
,因此您只需查看mystrings[0]
指向的字符串的第一个字符即可取消引用指针,例如*mystrings[0]
一个简短的例子将有所帮助:
#include <stdio.h>
#define MAX 40
int main (void) {
char *string = "example", /* string literal */
*arrptrs[MAX] = { NULL }; /* array of pointers */
arrptrs[0] = string; /* set 1st pointer to point to string */
if (*arrptrs[0] == 'e') /* test 1st char is 'e' */
printf ("found : %s\n", arrptrs[0]);
return 0;
}
由于您正在查看指针数组的第一个元素,因此您还可以通过取消引用数组来打印字符串"example"
,例如
printf ("found : %s\n", *arrptrs);
示例使用/输出
$ ./bin/arrptrs
found : example
(无论您是使用arrptrs[0]
还是*arrptrs
访问第一个元素,输出都是相同的,它们是等效的 - 您明白为什么吗?)
注意:始终注意C-Operator Precedence。如果您还有其他问题,请与我们联系。