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

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

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

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

这是为什么呢?

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

实例代码

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

#include <stdio.h>

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语言函数传递了指针,值为什么没有被修改

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

相关推荐

  1. 漫谈:C语言 传递 函数参数 指针

    2024-01-02 07:12:03       15 阅读
  2. C语言中向函数传递函数指针方法

    2024-01-02 07:12:03       19 阅读
  3. 解释C语言函数及其参数传递方式

    2024-01-02 07:12:03       22 阅读
  4. TikTok账号限流原因解决方法

    2024-01-02 07:12:03       6 阅读
  5. C++ 传递、引用传递指针传递

    2024-01-02 07:12:03       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-02 07:12:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-02 07:12:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-02 07:12:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-02 07:12:03       18 阅读

热门阅读

  1. AutoSAR(基础入门篇)4.9-Autoar_BSW小结

    2024-01-02 07:12:03       33 阅读
  2. Python | 机器学习之数据清洗

    2024-01-02 07:12:03       43 阅读
  3. ps怎么切图

    2024-01-02 07:12:03       39 阅读
  4. 记录爬虫编写步骤

    2024-01-02 07:12:03       41 阅读
  5. GO语言基础笔记(九):工程实践

    2024-01-02 07:12:03       34 阅读