int oddNums[5] = {1, 3, 5, 7, 9};
int
这将创建一个 5 s的数组。如果你参考oddNums[2]
,那会给你5
。如果您引用,那是指向数组开头的oddNums
指针。int
所以*oddNums
会给你1,*(oddNums+1)
会给你3,依此类推。
char str[20] = "Hello world";
请参阅我关于oddNums
上面的讨论,这适用于此处。这也是一个字符串,这意味着它在字母之后以零结尾d
。
int *ip = oddNums;
记住oddNums
是一个指向整数的指针。所以这只是将它复制到另一个int
名为ip
.
char *cp = str + 6;
这会将值分配(str + 6)
给char
指针cp
。str
是char
指向上面定义的字符串的指针。它指向字符串“Hello world”的开头。
printf("\n.%d",*(++cp) + *oddNums);
*(++cp)
表示在递增之后获取cp
指向的内容。换句话说,preincrement,然后得到它指向的东西。指向+ 6,这是字符串中的。但是让它指向“世界”中的“o”。所以会产生一个'o'。 cp
cp
cp
str
w
++cp
*(++cp)
然后'o'被添加到任何oddNums
点。自从我们开始之后什么都没有发生oddNums
,所以它仍然指向整数数组中的 1。*oddNums
说“给我什么oddNums
指向”,即 1。
*(++cp) + *oddNums
所以的值为'o' + 1
,即 'p'(ASCII 序列中的下一个字母)。
有趣的是,它printf
说“在打印换行符和句点后将给定的内容打印为整数”(“\n.%d”)。因此,结果将是.112
...... 我认为。