在下面的C程序中,我不明白为什么在调用foo之后buf [0] ='A'.foo不是在做价值传递吗?
#include <stdio.h>
#include <stdlib.h>
void foo(char buf[])
{
buf[0] = 'A';
}
int main(int argc, char *argv[])
{
char buf[10];
buf[0] = 'B';
printf("before foo | buf[0] = %c\n", buf[0]);
foo(buf);
printf("after foo | buf[0] = %c\n", buf[0]);
system("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
before foo | buf[0] = 'B'
after foo | buf[0] = 'A'
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 12
void foo(char buf[])
Run Code Online (Sandbox Code Playgroud)
是相同的
void foo(char* buf)
Run Code Online (Sandbox Code Playgroud)
当你调用它时foo(buf),你按值传递指针,所以指针的副本就会生成.
指针的副本指向与原始指针相同的对象(或者,在这种情况下,指向数组的初始元素).
在C++通过引用语义传递的意义上,C没有传递引用语义.C中的所有内容都按值传递.指针用于通过引用语义传递.
| 归档时间: |
|
| 查看次数: |
3593 次 |
| 最近记录: |