带函数的c指针

带函数的c指针,c,function,pointers,C,Function,Pointers,编写一个程序,接受用户提供的总秒数。将此值连同三个变量(小时、分钟、秒)的地址一起传递给名为time()的函数,该函数将计算小时、分钟和秒数。从main()打印此信息 请帮助我plz我如何修复我的代码,使这个程序的工作方式应该 /* Adham Hamade . */ #include <stdio.h> #include <conio.h> //function prototype void time(int &,int &,int &a

编写一个程序,接受用户提供的总秒数。将此值连同三个变量(小时、分钟、秒)的地址一起传递给名为
time()
的函数,该函数将计算小时、分钟和秒数。从
main()
打印此信息

请帮助我plz我如何修复我的代码,使这个程序的工作方式应该

   /* Adham Hamade
 .
  */

#include <stdio.h>
#include <conio.h>

//function prototype
void time(int &,int &,int &, int);


    int main()
   {
   //Variables
    int num;
    int hours;
    int minutes;
    int seconds;


    //reference number variables 
    int *h = &hours;
    int *m = &minutes; 
    int *s = &seconds;


    printf("Please enter number of seconds");
    scanf("%d",&num);

    time(h, m, s, num);

    printf("\n\nTime is %d hrs %d mins %d secs", hours, minutes, seconds);


 getch();
 return 0 ;   
 }

 void time(int &h,int &m ,int &s, int num)
 {
      int sec;
      int min;
      int hr;
      int t;


      hr = num / 3600 ;
      t = num %3600;
      min = t/60;
      sec = t%60;

      hr = &h;
      min = &m;
      sec = &s;


 }
/*Adham Hamade
.
*/
#包括
#包括
//功能原型
无效时间(int&,int&,int&,int&,int);
int main()
{
//变数
int-num;
整小时;
整数分钟;
整数秒;
//参考数变量
int*h=&hours;
int*m=&minutes;
int*s=&秒;
printf(“请输入秒数”);
scanf(“%d”和&num);
时间(h,m,s,num);
printf(“\n\n时间为%d小时%d分钟%d秒”,小时,分钟,秒);
getch();
返回0;
}
无效时间(int&h、int&m、int&s、int-num)
{
国际秒;
int-min;
国际人力资源;
int t;
hr=num/3600;
t=num%3600;
min=t/60;
sec=t%60;
hr=&h;
min=&m;
秒=&s;
}

C中没有按引用调用,只有按引用传递。
改变

void time(int &,int &,int &, int);  

时间的函数定义中,更改

 hr = &h;
 min = &m;
 sec = &s;


C中没有按引用调用,只有按引用传递。
改变

void time(int &,int &,int &, int);  

时间的函数定义中,更改

 hr = &h;
 min = &m;
 sec = &s;


C中没有按引用调用,只有按引用传递。
改变

void time(int &,int &,int &, int);  

时间的函数定义中,更改

 hr = &h;
 min = &m;
 sec = &s;


C中没有按引用调用,只有按引用传递。
改变

void time(int &,int &,int &, int);  

时间的函数定义中,更改

 hr = &h;
 min = &m;
 sec = &s;


试试这个,只是修改了你的程序

#include <stdio.h>

//function prototype
 void time(int *h,int *m ,int *s, int num);


int main()
{
   //Variables
    int num;
    int hours;
    int minutes;
    int seconds;

    //reference number variables 
    int h ;
    int m ; 
    int s;


    printf("Please enter number of seconds");
    scanf("%d",&num);

    time(&hours, &minutes, &seconds, num);

    printf("\n\nTime is %d hrs %d mins %d secs", hours, minutes, seconds);


 getch();
 return 0 ;   
 }

 void time(int *h,int *m ,int *s, int num)
 {
      int sec;
      int min;
      int hr;
      int t;

      hr = num / 3600 ;
      t = num %3600;
      min = t/60;
      sec = t%60;

      *h= hr ;
      *m = min ;
      *s =sec ;
 }
所以一个函数调用

time(&hours, &minutes, &seconds, num);
定义 指针*h指向变量hours的地址

指针*m指向变量minutes的地址

指针*s指向变量seconds的地址

秒数的值被分配给num


因此,分配给指针的任何值都会反映在主函数中,因为它们指的是内存位置。

试试这个,只是修改了你的程序

#include <stdio.h>

//function prototype
 void time(int *h,int *m ,int *s, int num);


int main()
{
   //Variables
    int num;
    int hours;
    int minutes;
    int seconds;

    //reference number variables 
    int h ;
    int m ; 
    int s;


    printf("Please enter number of seconds");
    scanf("%d",&num);

    time(&hours, &minutes, &seconds, num);

    printf("\n\nTime is %d hrs %d mins %d secs", hours, minutes, seconds);


 getch();
 return 0 ;   
 }

 void time(int *h,int *m ,int *s, int num)
 {
      int sec;
      int min;
      int hr;
      int t;

      hr = num / 3600 ;
      t = num %3600;
      min = t/60;
      sec = t%60;

      *h= hr ;
      *m = min ;
      *s =sec ;
 }
所以一个函数调用

time(&hours, &minutes, &seconds, num);
定义 指针*h指向变量hours的地址

指针*m指向变量minutes的地址

指针*s指向变量seconds的地址

秒数的值被分配给num


因此,分配给指针的任何值都会反映在主函数中,因为它们指的是内存位置。

试试这个,只是修改了你的程序

#include <stdio.h>

//function prototype
 void time(int *h,int *m ,int *s, int num);


int main()
{
   //Variables
    int num;
    int hours;
    int minutes;
    int seconds;

    //reference number variables 
    int h ;
    int m ; 
    int s;


    printf("Please enter number of seconds");
    scanf("%d",&num);

    time(&hours, &minutes, &seconds, num);

    printf("\n\nTime is %d hrs %d mins %d secs", hours, minutes, seconds);


 getch();
 return 0 ;   
 }

 void time(int *h,int *m ,int *s, int num)
 {
      int sec;
      int min;
      int hr;
      int t;

      hr = num / 3600 ;
      t = num %3600;
      min = t/60;
      sec = t%60;

      *h= hr ;
      *m = min ;
      *s =sec ;
 }
所以一个函数调用

time(&hours, &minutes, &seconds, num);
定义 指针*h指向变量hours的地址

指针*m指向变量minutes的地址

指针*s指向变量seconds的地址

秒数的值被分配给num


因此,分配给指针的任何值都会反映在主函数中,因为它们指的是内存位置。

试试这个,只是修改了你的程序

#include <stdio.h>

//function prototype
 void time(int *h,int *m ,int *s, int num);


int main()
{
   //Variables
    int num;
    int hours;
    int minutes;
    int seconds;

    //reference number variables 
    int h ;
    int m ; 
    int s;


    printf("Please enter number of seconds");
    scanf("%d",&num);

    time(&hours, &minutes, &seconds, num);

    printf("\n\nTime is %d hrs %d mins %d secs", hours, minutes, seconds);


 getch();
 return 0 ;   
 }

 void time(int *h,int *m ,int *s, int num)
 {
      int sec;
      int min;
      int hr;
      int t;

      hr = num / 3600 ;
      t = num %3600;
      min = t/60;
      sec = t%60;

      *h= hr ;
      *m = min ;
      *s =sec ;
 }
所以一个函数调用

time(&hours, &minutes, &seconds, num);
定义 指针*h指向变量hours的地址

指针*m指向变量minutes的地址

指针*s指向变量seconds的地址

秒数的值被分配给num



因此,分配给指针的任何值都会反映在主函数中,因为它们引用的是内存位置。

因此,您能看出什么不起作用吗?使用调试器,用
\n
结束所有
printf
格式化字符串,或者调用
fflush
创建指向变量的指针,只是为了维护别名,在需要地址时使用别名,这是一种糟糕的做法。您可以消除
h
m
s
变量,只需调用
time
作为
time(&hours,&minutes,&seconds,num)
。该函数必须使用指针;C语言中没有引用参数。C语言中已经有一个
time
函数,因此当您定义自己的名为
time
的外部函数时,您正在调用未定义的行为。@Kaz;你怎么能说它调用UB?那么你能说什么不起作用了?使用调试器,用
\n
结束所有
printf
格式化字符串,或者调用
fflush
创建指向变量的指针,只是为了维护别名,而在需要地址时使用别名,这是一种糟糕的做法。您可以消除
h
m
s
变量,只需调用
time
作为
time(&hours,&minutes,&seconds,num)
。该函数必须使用指针;C语言中没有引用参数。C语言中已经有一个
time
函数,因此当您定义自己的名为
time
的外部函数时,您正在调用未定义的行为。@Kaz;你怎么能说它调用UB?那么你能说什么不起作用了?使用调试器,用
\n
结束所有
printf
格式化字符串,或者调用
fflush
创建指向变量的指针,只是为了维护别名,而在需要地址时使用别名,这是一种糟糕的做法。您可以消除
h
m
s
变量,只需调用
time
作为
time(&hours,&minutes,&seconds,num)
。该函数必须使用指针;C语言中没有参考参数。C语言中已经有一个
time
函数,因此当您定义自己的名为
time的外部函数时