指向数组的指针的第一个字符?

时间:2017-12-10 00:13:11

标签: c

我有一个指向字符的数组:

char *myStrings[40];

最终,myStrings [0]将等于“example”或类似的东西。我想查看第一个字符,看看它是否等于e。谢谢你的帮助!

2 个答案:

答案 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。如果您还有其他问题,请与我们联系。