j = *x; x = &j; (*x) = 3; 为什么这会改变 c 中 j 的值

穆罕默德·贾比尔

我写了这么简单的代码:

int main()
{
    int i,j;
    int *x; // x points to an integer
    i = 1;
    x = &i;
    j = *x;
    printf("i = %d, j = %d\n", i, j); //i = 1, j = 1
    x = &j;
    (*x) = 3;
    printf("i = %d, j = %d", i, j); // i = 1, j = 3
}

正如我们在这里看到的,在(*x) = 3;有人可以解释这里发生了什么之后,j 的值发生了变化。

int main()
{
    int i,j;   // declaration of i and j
    int *x;    // x points to an integer
    i = 1;     // initialization of i = 1
    x = &i;    // initialization of x = address of i
    j = *x;    // initialization of j = value of what pointed by x => j = 1

    printf("i = %d, j = %d\n", i, j); //i = 1, j = 1

    x = &j;    // assign to x the address of j
    (*x) = 3;  // assign 3 to what pointed by x 
               // x points to j, so j = 3

    printf("i = %d, j = %d", i, j); // i = 1, j = 3
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

数组x的索引n处的项目值的惯用J

x$data[i, j] <- 值中的错误:要替换的项目数不是替换长度的倍数

使用APOC Neo4J 3.x从索引中删除关系

在 Neo4J 3.x 中自动填充关系索引?

Neo4J 3.x比Neo4J 2.x使用更多的内存?如何避免呢?

I [j] <-IFunction(j,d,x)中的错误:类型为'closure'的对象不可子集化

在python中,后台中到底发生了什么,以至于“ x = 1j”起作用,但是“ x = 1 * j”引发了错误?

使用Alt + Shift + X,J的Eclipse Juno

什么是android x和Android J Unit 4错误包?

为什么J公理在给x,y签名时取2 x?

Neo4j:在neo4j 3.x版本中,如何计算特定日期和今天日期之间的年差?

cor.test.default中的错误(x = mat [,i],y = mat [,j],...):有限的观测值不足

Mac OS X上的Install4j JRE位于.install4j / jre.bundle中

为什么j的值在“ j = 2 * 3/4 + 2.0 / 5 + 8/5;”中 设置为2而不是3?

查找满足w + x = y + j的(x,y,z,j)的所有组合的算法,其中w,x,y,j是-N ... N(含)之间的整数

x $ j中的错误:$运算符对文本聚类中的原子向量无效

分离删除Neo4j 2.3.x / Cypher

Neo4j 4.x gremlin支持

Vert.X SLF4J记录

解释此序列的执行:x = j || i ++ && 1

弹性4J + Spring Boot 2.x

Log4j1.x LoggingEnvent:无法获取对象

混合log4j 1.x和log4j 2

从Log4j 1.x到Log4j 2.1.1的迁移问题

如何在numpy中有效地实现x [i] [j] = y [i + j]?

x [j]中的错误:在R中使用子集时,下标类型“列表”无效

numpy:高效矩阵计算A * xj,其中xj是X中的第j行

如何在J中没有默认x轴的情况下绘图?

使用 J48 解释 x 级别中感兴趣的划分属性的结果 (WEKA)