c - 这个C代码错了吗?

标签 c

我知道指针包含变量的地址,例如:

int c = 5;
int *p;  
p = &c;
printf("%d",*p); // Outputs 5.

但是如果我想发送一个地址给函数怎么办:

void function (int *p)
{
  p++;
}
int c;
function (&c);

当函数被调用时,&c的值被赋值给int *p。我猜确切的指令是:*p = &c;,但我不明白这是什么意思。

最佳答案

我更喜欢这样写int* p = &c;,也就是说,一个指向int类型的指针被赋值给c的地址。

正如您所注意到的,指针表示法可能会造成混淆,因为这两者是等价的:

int *p = &c;

int *p;
p = &c;

希望这对您有所帮助!

编辑:混淆是因为 * 既用作取消引用运算符,又用于声明指针。所以当p包含c的地址时,*p解引用指针并返回c的值。但是当你说 int *p = &c; 时,* 是在说“p 是一个指向 int 的指针”,但没有进行任何取消引用。

关于c - 这个C代码错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896440/

相关文章:

c - 如何使用Cgreen在精度范围内进行测试?

c - GDB:如何在gdb中识别当前函数的特定变量的变量声明行号

我们可以更改指针指向的字符串字符吗?

c++ - gcc/mingw 中 'startup files' 的来源

C "Error: Expecter expression before ' 列表'"

c - 有什么方法可以使 visual C++ (9.0) 生成有关 printf 格式字符串与 printf 参数类型不匹配的警告?

c - 合适的线程数是多少

c - MXML C 的问题

c - 编写一个 C 函数来解析十六进制字符串并将其转换为十进制?

c - printf 在 strcpy 中出现段错误后执行?