我有一个char *p = "abcd"
,如何仅使用C(而不是C++)访问元素'a','b','c','d'
?如有任何帮助,我们将不胜感激。
您可以使用索引:
char a = p[0];
char b = p[1];
/* and so on */
等价地,你可以使用指针算术,但我发现它可读性较差:
char a = *p;
char b = *(p+1);
如果你真的想给别人一个惊喜,你也可以写这样的:
char a = 0[p];
char b = 1[p];
/* and so on */
这里,p
是指一个字符指针数组。您可以使用数组索引来访问该数组中的每个变量。最广泛使用的符号是p[n]
,其中n
是第n+1
个字符[元素]。
示例:
对于1
的第一个字符,使用p[0]
、2
的第二个字符、使用p[1]
,依此类推。
另一个例子:
#include <stdio.h>
int main()
{
char *p="abcd";
for (; *p; p++)
printf("%cn", *p);
return 0;
}
结果是:
a
b
c
d
使用数组下标运算符[]
。它允许您访问p[n]
形式的指针类型的第n个元素。
您也可以使用增量运算符++
来增加指针。
#include <stdio.h>
int main()
{
char *p="abcd";
printf("%cn", p[0]);
printf("%cn", p[1]);
printf("%cn", p[2]);
printf("%cn", p[3]);
return 0;
}
返回
a
b
c
d
#include <stdio.h>
#include <stdlib.h>
void main()
{
char* str="Hello, World!";
printf("%sn",str);
}
输出:
Hello, World!
第二种方法:
#include <stdio.h>
#include <stdlib.h>
void main()
{
char* str="Hello";
int n=strlen(str);
for(int i=0;i<n;i++)
{
printf("%c"str[i]);
}
}
输出:
Hello