你好,我有3个问题/3行代码,我不明白。如果有人能帮我就好了。我的理解仍然不是鸡蛋里的黄色。这些问题被评论为//问题:
#include <stdio.h>
#include <stdlib.h>
struct trace {
char *sign;
int *values;
struct trace *pN;
};
int main() {
int decimal[] = {4,2,1};
char text[]="Word-2!";
struct trace *pV;
pV = (struct trace*) calloc(2, sizeof(struct trace));
pV->pN = pV;
pV->values = decimal + decimal[2]; // = 2
// QUESTION: explanation why decimal + decimal[2] is 2 / what is decimal (not *decimal).
// My guess is: decimal[0 + decimal[2]] = decimal[0 + 1] = decimal[1] = 2
(*pV).sign = text + *decimal; // text + 4 //"-2!";
*(pV + 1) = pV[0]; // pV[1] = pV[0] = *pV
++pV[1].values; // QUESTION: what does this do? the ++ in front of pV instead of pV[++1].values
++*pV[1].values; // QUESTION: what does this do?
printf("%d %s\n", *pV->values, pV->sign);
printf("%d %s\n",*pV->pN[1].values, pV->pN[1].sign);
return 0;
}编辑:目的是找出在这两个printf中所显示的内容,它们都是:“2-2!”还有"2 -2!“
发布于 2022-06-06 12:09:48
//问句:解释为什么十进制+ decimal2是2/什么是小数(不是小数点)。 //我的猜测是:十进制[0+ decimal2] = decimal0 +1=十进制1=2
严格地说,decimal + decimal[2]不是2。它是指针,指向包含2的内存(因为简单的decimal指向decimal[0],并添加到这个指针decimal[2],即1,给我们decimal[1],即2)。
对于接下来的两个问题,查看运算符优先表是很有用的。
++pV[1].values; // it's basically ++(pv[1].values), i.e. incrementing of the pointer 'values'
++*pV[1].values; // it's basically ++(*(pv[1].values)), i.e. incrementing of the integer value, pointed by the pointer 'values'https://stackoverflow.com/questions/72517268
复制相似问题