【发布时间】:2015-08-06 12:33:40
【问题描述】:
在下面的程序中,我期待 printf 语句打印
a = b, b = a
但是,实际上它正在打印
a=a, b=b
当我尝试在函数内打印a、b 值时,它给出了a=b,b=a:::I 不明白为什么传递被引用不会影响实际参数。我错过了什么?有人能说明一下吗?
void swap_pointers(char* a, char* b) {
char* tmp = a;
a = b;
b = tmp;
}
int main() {
char* a = "a";
char* b = "b";
swap_pointers(a, b);
printf("a = %s, b = %s", a, b);
return 0;
}
【问题讨论】:
-
指针(像任何值一样)不在 C 中使用 Call by Reference 语义传递。
-
您应该将本例中的每个指针声明为
const。
标签: c string pointers pass-by-reference