作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道指针包含变量的地址,例如:
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/
我无法在附加行中显示“真”、“假”、"is"和“否”按钮。 我在这里有一个应用程序:Application 请按照以下步骤使用应用程序: 1。当你打开应用程序时,你会看到一个绿色的加号按钮,点击 在此
我是一名优秀的程序员,十分优秀!