gpt4 book ai didi

c - 函数自动返回指针而无需 return 语句

转载 作者:行者123 更新时间:2023-11-30 18:46:32 24 4
gpt4 key购买 nike

即使我没有使用任何 return 语句,函数 fun 如何返回指向创建的节点的指针。因此,节点中的值被成功打印。怎么办?

#include <stdio.h>
#include"stdlib.h"

struct node
{
int data;
struct node *next;
};

main ()
{
struct node *nl=fun();
printf("%d",nl->data);
}

fun ()
{
struct node *p= (struct node*)malloc(sizeof (struct node));
scanf("%d", &(p->data));
p->next=NULL;
}

最佳答案

旧版本的 C 允许函数不指定返回类型,并且返回类型自动为 int

如果一个函数被声明为返回一个值(显式地,或者在你的情况下隐式地),那么它必须返回一个值,否则你将得到 undefined behavior .

另请注意,在旧版本的 C 中,编译器在调用时会自动声明以前从未见过的函数。此类型和隐式返回类型都很容易出错,因此在 C99 标准中被删除。

<小时/>

最后一点关于使用 int 指针的注释:在计算机历史中,指针和 int 通常是不相等的。例如,现在,在 64 位系统上,指针通常是 64 位,而 int 是 32 位。无论您如何努力,都无法将 64 位指针放入 32 位 int 中。这是您 should never cast the result of malloc 的原因之一.

关于c - 函数自动返回指针而无需 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776786/

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