【发布时间】:2019-04-10 09:42:14
【问题描述】:
我正在尝试使用char * 来存储一个字符串,并且由于指针指向给定字符串的第一个char 的内存位置,我尝试使用指针算术(ptr++)来移动到下一个字符(因为它们是按顺序存储的)。但是,在我的示例程序中,“字符串”的 大小 是 22,但是当我尝试运行如下所示的 for 循环时,它只运行了 12 次。知道为什么吗?我是否错过了有关指针运算如何工作的重要内容?
#include <stdio.h>
int main(void) {
char *strVar = "testfordifferentlength";
int i,timesCalled=0;
printf("\nLength = %d\n\n",strlen(strVar));
for(i=0;i <= strlen(strVar);i++){
printf("%c",*strVar);
strVar++;
timesCalled++;
}
printf("\n\nFor loop run %d times!\n",timesCalled);
return 0;
}
【问题讨论】:
-
您在这里真正想要实现或学习什么?
-
另一件尚未提及的事情是您不想在空终止符上执行
printf("%c"
标签: c pointers pointer-arithmetic