C 检查指向数组的指针的第一个字符
我有一个指向字符的指针数组:C 检查指向数组的指针的第一个字符,c,string,C,String,我有一个指向字符的指针数组: char *myStrings[40]; 最后,myStrings[0]将等于“示例”或类似的内容。 我想检查第一个字符,看看它是否等于e 谢谢你的帮助 < P>数组的每个元素都是一个字符串,然后考虑我们有: char *myStrings[40] = {"Example", " 01", " - ", "Hello", ",World!\n"}; 所以 现在,我们必须通过这种方式访问*myStrings[0]的第一个元素 *(myStrings)[0]或*my
char *myStrings[40];
最后,myStrings[0]
将等于“示例”或类似的内容。
我想检查第一个字符,看看它是否等于e
谢谢你的帮助 < P>数组的每个元素都是一个字符串,然后考虑我们有:
char *myStrings[40] = {"Example", " 01", " - ", "Hello", ",World!\n"};
所以
现在,我们必须通过这种方式访问*myStrings[0]
的第一个元素
*(myStrings)[0]
或*myStrings[0]
if (*(myStrings)[0] == 'E'){
do something
}
或
<>这个数组的每个元素都是一个字符串,然后考虑我们有:
char *myStrings[40] = {"Example", " 01", " - ", "Hello", ",World!\n"};
所以
现在,我们必须通过这种方式访问*myStrings[0]
的第一个元素
*(myStrings)[0]
或*myStrings[0]
if (*(myStrings)[0] == 'E'){
do something
}
或
指针是一个变量,它将指向其他对象的地址作为其值。要访问指针所在地址的值(例如,其他对象),请使用一元
“*”
解除对指针的引用
由于您有一个指针数组,因此需要取消对数组的第一个元素的引用,例如mystrings[0]
。使用C-运算符优先级,[..]
的优先级高于'*'
,因此您只需通过取消引用指针查看mystrings[0]
指向的字符串的第一个字符,例如*mystrings[0]
if (*(myStrings)[0] == 'E'){
do something
}
一个简短的例子将有助于:
#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;
}
示例使用/输出
$ ./bin/arrptrs
found : example
(无论您是使用arrptrs[0]
还是*arrptrs
访问第一个元素,输出都是相同的,它们是等效的——您知道为什么吗?)
注意:始终注意C运算符的优先级。如果您还有其他问题,请告诉我。指针是一个变量,它将指向其他对象的地址作为其值。要访问指针所在地址的值(例如,其他对象),请使用一元
“*”
解除对指针的引用
由于您有一个指针数组,因此需要取消对数组的第一个元素的引用,例如mystrings[0]
。使用C-运算符优先级,[..]
的优先级高于'*'
,因此您只需通过取消引用指针查看mystrings[0]
指向的字符串的第一个字符,例如*mystrings[0]
if (*(myStrings)[0] == 'E'){
do something
}
一个简短的例子将有助于:
#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;
}
示例使用/输出
$ ./bin/arrptrs
found : example
(无论您是使用arrptrs[0]
还是*arrptrs
访问第一个元素,输出都是相同的,它们是等效的——您知道为什么吗?)
注意:始终注意C运算符的优先级。如果您还有其他问题,请告诉我。
如果(*myStrings)[0]='e')
您有一个指向char的指针数组(char*[]
),而不是指向char数组的指针(char(*)[]
)。您知道myStrings[0]
是一个“字符串”。现在您知道如何访问字符串的任意字符了吗?如果你有char*mySingleString如果(*myStrings)[0]='e')
你有一个指向char的指针数组(char*[]
),而不是指向char数组的指针(char(*)[]
)。你知道myStrings[0]
是一个“字符串”。现在您知道如何访问字符串的任意字符了吗?如果你有char*mySingleString
,那么您将如何访问它的第一个字符?*myStrings[0]=“Example”
-typo,不应该有*
?*myStrings[0]=“Example”
-typo,不应该有*
?