char a[20]="this is";
cout<<strchr (a,'t')-a;这个(a,'t')-a“如何显示字母t第一次出现的索引?它是如何工作的?有人说编译器做了ASCII字符的和,然后减去确定的字符。
发布于 2015-05-27 14:50:34
x = strchr (a, 't')返回指向C字符串a中第一个字符t的指针。在您的示例中,这恰好与a中第一个字符的地址相同。这也是变量a所指向的。
通过减去x - a,您可以减去两个地址,这将给出't'在a中的索引。它是零,因为x和a是相等的。和ASCII没什么关系。
发布于 2015-05-27 14:44:01
这纯粹是指针算法。
strchr (a,'t')返回字符串a中指向字符't'的指针。a保存字符串的地址。
strchr (a,'t')- a返回字符串a中的t索引。
示例:a有地址100的h地址在一个将为101个,
因此,您将得到字符h的索引1。
发布于 2015-05-27 14:53:45
strchr返回指向字符串中第一个已找到字符的指针。
char str[] = "Some string with spaces";
char* ptr;
ptr = strchr(str, ' ');
while(ptr != 0)
{
printf("Space on %d. place\n", ptr - str);
ptr = strchr(ptr + 1, ' ');
}https://stackoverflow.com/questions/30485483
复制相似问题