gpt4 book ai didi

c - 带有指针参数 C 的测试函数

转载 作者:太空宇宙 更新时间:2023-11-04 07:56:29 32 4
gpt4 key购买 nike

我这周开始学习 C,这是我在指针方面遇到的第一个困难。

我想测试这个功能:

void    ft_ultimate_div_mod(int *a, int *b)
{
int *tmp;

if (b != 0)
{
*tmp = *a % *b;
*a = *a / *b;
*b = *tmp;
}
}

但我无法弄清楚主要使用指针。我的程序没有打印任何东西:

int     main(void)
{
int *a;
int *b;

*a = 5;
*b = 3;

ft_ultimate_div_mod(a, b);
printf("%d", *a);
printf("%d", *b);

return (0);

我能做什么?谢谢!

最佳答案

对于初学者来说,将变量 tmp 声明为类型 int * 没有意义。该变量用于存储 int 类型的对象,因此它必须具有 int 类型。否则,您将使用具有不确定值的未初始​​化指针,这会导致程序出现未定义的行为。

此外,由于变量在 if 语句的复合语句中使用,因此它应该在 if 语句的 blco 范围内声明。

main 中的这些声明

int *a;
int *b;

这些都没有意义。

你的意思是下面的。

#include <stdio.h>

void ft_ultimate_div_mod(int *a, int *b)
{
if ( *b != 0 )
{
int tmp = *a % *b;
*a = *a / *b;
*b = tmp;
}
}

int main(void)
{
int a = 10;
int b = 3;

ft_ultimate_div_mod( &a, &b );

printf( "%d %d\n", a, b );

return 0;
}

ft_ultimate_div_mod 函数通过引用排除了它的参数,因为它试图改变它们的原始值。

关于c - 带有指针参数 C 的测试函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753810/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com