char a[20]="this is";
cout<<strchr (a,'t')-a;
这个(a,'t') - “如何显示字母t的第一个外观的索引?它是如何工作的? 有人说编译器会生成ASCII字符的总和 减去确定的角色。
答案 0 :(得分:0)
纯粹是指针算术。
strchr (a,'t')
返回指向字符串't'
中字符a
的指针。
a
保存字符串的地址。
strchr (a,'t')
- a返回字符串t
中的a
索引
示例:a有addrress 100
a中h
的地址为101,
所以你将得到字符h的索引1
答案 1 :(得分:0)
x = strchr (a, 't')
返回指向C字符串t
中第一次出现的字符a
的指针。在您的情况下,这恰好与a
中第一个字符的地址相同。这也是变量a
指向的内容。
通过减去x - a
减去两个地址,(感谢pointer arithmetic magic)将在't'
中给出a
的索引。它为零,因为x
和a
相等。与ASCII无关。
答案 2 :(得分:0)
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, ' ');
}