C语言函数传递了指针,值没有被修改的原因及解决方法 您所在的位置:网站首页 指针赋值后再改变值指针会变那 C语言函数传递了指针,值没有被修改的原因及解决方法

C语言函数传递了指针,值没有被修改的原因及解决方法

2024-07-12 00:57| 来源: 网络整理| 查看: 265

C语言函数指针参数值为什么不变

C语言函数中传递了指针作为参数,确切来说是传递了指向变量的内存地址作为参数,可经过函数内的修改之后,该指针指向的变量的值为什么不会被修改?就像下方这个函数:

void test(int *x){ *x++; }

这是为什么呢?

这个跟运算符的优先级也没有关系,像上面这样的*x++的表达式中,并不会被优先计算x++,即不会先进行内存地址的自增运算。下面的实例中将探讨这一点。

实例代码

该实例输出了三个变量的内存地址,前两个是一样的,即通过*x++的运算,变量指向的内存地址并没有发生改变,但是如果是通过指针的自增运算,比如z++,则内存地址会发生改变。

#include void test(int *x){ *x++; } int main() { int y = 1; printf("%x\n",&y); test(&y); printf("%x\n",&y); int *z = &y; z++; printf("%x\n",z); } //编译运行之后得到输出(不同的平台和编译器可能得到不一样的输出): 61fe14 61fe14 61fe18 解决方法

将*x++修改为:*x = *x + 1;

来源:笨鸟工具

原文:C语言函数传递了指针,值为什么没有被修改

免责声明:内容仅供参考,不保证正确性!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有