验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

C++指针传递的作用是什么

阅读:361 来源:乙速云 作者:代码code

C++指针传递的作用是什么

具体如下

void pointerTest(int num) {
    num = 20;
}
 
int main() {
    int num = 10;
    pointerTest(num);
    LOGI("%d", num) // 打印出来的结果是 10
 
    return 0;
}

在这个例子中,main 函数定义了整型 num,值为 10,然后以参数传递给 pointerTest 函数,在 pointerTest 函数中,直接对传进来的 num 赋值为 20。最终,打印出来的结果还是 10。 

为啥呢?熟悉 java 的人很快会反应过来,因为 int 是基本数据类型,要用引用数据类型。

    public static void pointerTest(String str) {
        str = "wk";
    }
 
    public static void main(String[] args) {
        String str = "test";
        pointerTest(str);
        System.out.println(str); // 打印出来的结果是 test
    }

String 是引用数据类型了吧,但是打印出来的结果仍没被改变

 其实对于引用数据类型参数而言,只能对这个对象进行相应的操作(get/set),并不能直接替换整个对象

C/C++ 中得意于指针,能够修改函数外的变量值

void pointerTest(int *num) {
    *num = 20;
}
 
int main() {
    int num = 10;
    pointerTest(&num);
    LOGI("%d", num) // 打印出来的结果是 20
 
    return 0;
}

字符串也是一样的:(C中的字符串类型为 char*)

void pointerTest(char **str) {
    *str = "wk";
}
 
int main() {
    char *str = "test";
    pointerTest(&str);
    LOGI("%s", str) // 打印出来的结果是 wk
 
    return 0;
}

在 pointerTest 函数中,对传进来的指针进行取值(*)对外部参数进行修改。按照这个思路反推,那么我们在传递内存地址给函数 其实是 提供函数修改参数的能力

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>