【发布时间】:2014-05-17 07:09:40
【问题描述】:
我正在使用在主程序中扫描数字的程序。之后,该程序调用函数 change_number(),并作为参数给出数字的内存地址。该程序应在子程序中将数字加 3 后,在子程序中将其打印出来并恢复该新值。然而,当试图在子程序 change_number() 中打印出数字时,它会打印出它的内存地址。我的理解是,当使用 * -notation 或仅通过插入变量名称来引用指针时,程序应该返回整数值。我尝试过的另一个编译器显示以下错误消息,甚至无法使用 x -notation 或 *pointer_x -notation 进行编译:
- “您正在尝试将变量初始化为类型错误的值。 code.c:20: 警告:来自不兼容指针类型的赋值”。
我不明白,因为我的指针是作为整数引入的,就像整数本身一样。代码如下:
#include<stdio.h>
void change_number(int *x);
int main()
{
int x;
printf("Give number x: ");
scanf("%d", &x);
printf("In main program: x = %d\n", x);
change_number(&x);
printf("In main program: x = %d\n", x);
return 0;
}
void change_number(int *x)
{
int *pointer_x;
pointer_x = &x;
x = x + 3;
printf("In sub program: x = %d\n", *pointer_x);
}
【问题讨论】:
标签: c pointers memory-address return-type