C指针减法

时间:2017-10-29 15:12:43

标签: c pointers syntax

我遇到了相互减少指针的问题。

char a[] = "abcdefghijkl";
a2 = 'g';
a3 = "jkl";
*a4, *a5;

a4 = strchr(a,a2);
a5 = strstr(a,a3);

printf("%s\n", a+6);
printf("%c\n", *a);
printf("%c\n", *(++a4));
printf("%c\n", ++(*a4));
printf("%ld\n", a5-a4);
printf("%s\n", &a[2]);
  1. printf功能打印:ghijkl
  2. printf函数打印:a
  3. printf函数打印:h
  4. printf功能打印:我
  5. printf功能打印:2
  6. printf函数print:cdefgiijkl
  7. 5。和6.对我来说是个问题。 a4的最后一种形式指向'i',a5指向'j'。在这种情况下,我认为我应该因a5-a4而取1。 最后一个对我来说也很复杂。我只需要它是'c'。

2 个答案:

答案 0 :(得分:1)

++(*a4)更改a4指向的字符。它不会改变a4a4之前a5仍然指向两个字符。

答案 1 :(得分:0)

此代码: printf(“%s \ n”,& a [2]);

将打印,直到遇到null终止符,它在[]初始化时结束。在[2]的char之后它不会停止。您需要一个不同的格式说明符,或者您需要在'2'之后插入一个空终止符。