【发布时间】:2020-07-27 12:58:21
【问题描述】:
我对 C 中的指针很陌生,我有一个练习题,但我不明白为什么答案是这样。代码如下:
#include <stdio.h>
#include <stdlib.h>
void changeValue(int *valuePassed)
{
*valuePassed = 100;
}
int main()
{
int testValue = 9;
changeValue(&testValue);
printf("%d\n", testValue);
}
这最终会打印 100,我不知道为什么。
首先,函数 changeValue 是传递一个指针变量还是传递地址 valuePassed 的值(据我所知,这是两个不同的东西)。其次,*valuePassed = 100 行将 valuePassed 位置的值设置为 100,对吗?但是 valuePassed 没有被分配地址。那么如果将testValue(&testValue)的地址传入changeValue函数中,100是怎么打印出来的呢?
【问题讨论】:
-
*valuePassed = 100;保证它将打印100你期望什么?传递 address of` 运算符允许函数修改位于该地址的 _value。
标签: c pointers pass-by-reference function-definition