C指针 - 指向相同的地址

cno*_*oob 4 c pointers

#include <stdio.h>
#include <stdlib.h>

void foo(int *a, int *b);

void foo(int *a, int *b) {
    *a = 5;
    *b = 6;
    a = b;
}

int main(void) {
    int a, b;
    foo(&a, &b);
    printf("%d, %d", a, b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么a = b(foo)不起作用?printf输出"5,6"谢谢.

Jam*_*lis 10

它确实有效; 它只是没有做你认为它做的事情.

foo(),a = b将指针更改为指向a任何b点.它对函数之外的任何东西都没有影响; 它只会改变指针.

如果要将指向的int的值更改为与指向的int a的值相同,则b需要使用*a = *b,类似于已经在函数中执行赋值的方式.

  • @cnoob:是的.在C中,一切都按值传递. (4认同)