我写了一个程序,其中一个函数采用两个指针作为参数,并且该函数改变了指针的地址,所以当我在主函数中调用指针的值时,它显示的是旧的值。传递指针在C中的功能
代码: -
#include <stdio.h>
void sample(int *d, int *m);
int main(){
int day=12,month=3;
int *d,*m;
d = &day;
m = &month;
printf("Day = %d \t MOnth = %d\n",*d,*m);
sample(d,m);
printf("Day = %d \t Month = %d\n",*d,*m);
}
void sample(int *d, int *m){
int month = 1;
int day = 30;
m = &month;
d = &day;
}
基于答案的计算器我甚至称使用sample(&d,&m)
的功能,但同样did'nt工作,同样的问题。
我甚至尝试定义的功能等: -
void sample(int *d,int *m){
int month = 1;
int day = 30;
*m = month;
*d = day;
}
但程序崩溃。
你的第二个版本应该工作...如果它坠毁,我估计还会发生其他事情。 – vu1p3n0x
您正在设置函数指针参数的本地副本,以指向函数中的局部变量。这不会改变'main()'中的任何内容。你可以写(在示例函数中)'* d = 30; * m = 1;'(或'* d =日; * m =月;')。 –