我试图弄清楚这段代码是如何工作的,有人可以帮助我完成这里正在进行的过程:那*(++cp)
是什么意思?在我看来,我在想它= str + 7
和*oddNums
= 1是oddNums数组的开始.所以str + 8
在数学后= ld抱歉我真的不明白.
int main ()
{
int oddNums[5] = {1, 3, 5, 7, 9};
char str[20] = "Hello world";
int *ip = oddNums;
char *cp = str + 6;
printf("\n.%c",*(++cp) + *oddNums);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
printf("\n.%d",*(++cp) + *oddNums);
Run Code Online (Sandbox Code Playgroud)
分解.这相当于:
++cp;
printf("\n.%d", *cp + *oddNums);
Run Code Online (Sandbox Code Playgroud)
第一个语句cp
现在递增cp == str + 7
.替换cp
修改后的printf会产生:
printf("\n.%d", *(str + 7) + *oddNums);
Run Code Online (Sandbox Code Playgroud)
*(str + 7)
是相同的str[7]
,这是单个字符'o'
.*oddNums
是1.执行一次最终替换产生:
printf("\n.%d", 'o' + 1);
Run Code Online (Sandbox Code Playgroud)
它打印角色'p'
.或者更确切地说,它打印的ASCII值为'p'
-112,因为我们有%d
格式而不是%c
.