首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C指针问题用于我理解十进制+ decimal[2]

C指针问题用于我理解十进制+ decimal[2]
EN

Stack Overflow用户
提问于 2022-06-06 11:51:43
回答 1查看 67关注 0票数 0

你好,我有3个问题/3行代码,我不明白。如果有人能帮我就好了。我的理解仍然不是鸡蛋里的黄色。这些问题被评论为//问题:

代码语言:javascript
复制
#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!“

EN

回答 1

Stack Overflow用户

发布于 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)。

对于接下来的两个问题,查看运算符优先表是很有用的。

代码语言:javascript
复制
++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'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72517268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档