Tag: 返回

int main()的返回值是什么意思,以及如何显示它?

可能重复: main()应该在C / C ++中返回什么? 我在C中有这个简单的程序: #include int main() { return 8; } 返回值的含义是什么,如何显示或如何使用它?

评估报表

//prog1.c #include int f(int *a,int *b,int c) { if(c == 0) return 1; else { *a = *a + 1; *b = *b – 1; c = c – 1; return (*a + f(a,b,c) + *b); } } int main() { int a = 3,b = 3,c = 3; printf(“%d\n”,f(&a,&b,c)); return 0; } 我使用gcc和clang-3.5执行程序,发现输出= 16 […]

从C函数返回指针是好/坏设计?

我想知道来自C函数的返回指针是好/坏设计? 如果这是一个不好的做法,在下面的例子中,这将是一个好习惯: 问题是继续部分: c函数返回静态变量 在data.h文件中: #include #include typedef struct { int age; int number; } person; person * getPersonInfo(); 在data.c #include “data.h” static struct person* person_p = NULL; person * getPersonInfo() { person_p = (struct person*)malloc(10 * sizeof(struct person)); return person_p; } 在main.c #include “data.h” int main() { person* pointer = getPersonInfo(); return 0; } […]

如何确定long函数返回的位置

假设有一个名为LongFunction的1000行代码的函数,我们使用它: bool bSuccess = LongFunction(); assert(bSuccess); 这里我在调试时得到一个断言,我知道LongFunction有问题,所以我需要找到函数遇到问题的地方并返回: 我可以一步一步地调试它,它可以工作,但是很费时,我们不这样做。 我可以搜索关键字“返回”(或者更精确的搜索使用RegExp),并在那些返回时设置断点,它应该更快,但它仍然是乏味的手动工作,无法自动化。 #define返回TRACE( LINE ); 返回 它有效,但有以下问题: 它会打印太多冗余信息,因为经常使用返回。(或者我们可以使用一些EnvVar来打开或关闭它) 不适用于以下情况:if(bOK)返回true; 您对如何查明问题还有其他创意吗? 编辑:以下是一些让我们关注问题的细节。 它是关于C ++,而不是平台规范。 我们不想重构函数(是的,我知道我们应该),我们甚至不想更改任何代码 – 此时我们只想提供一些工具来简化我们的应用程序调试。 我也相信这应该是一个共同的要求,难道你不碰到这个吗? LongFunction()有多个退出点,并且返回类型不是必需的bool(HRESULT,用户定义的错误代码……) 编辑 :当前讨论的摘要: 我们有一些争议: 你应该重构这个function。 是的,每个人都知道我们应该,但这不是重点。如果我打电话重构函数,我不会在这里问这个问题。 找到LongFunction()返回失败的地方没有帮助。 我总是首先找到发生错误的地方,知道发生了什么,我很好奇为什么这没有用,你在这种情况下做了什么? (假设我已经熟悉该函数的工作原理) 我们有2个合理的解决方案: 来自Crashworks的ReturnMarker,函数中的堆栈对象将在函数返回时进行破坏,在析构函数中设置断点将显示它在debuger中返回的位置 来自Binary&Sadsido的CMyBool(x),将LongFunction的返回类型更改为可以从bool构造的CMyBool,从LongFunction返回将构造该对象,因此只需在构造函数中设置断点即可。

什么“返回0x1;”是什么意思?

当在web上浏览项目的源代码时,我发现main中的一些return语句对我来说很奇怪: int main() { /* … */ return 0x1; } 所以主要是返回0x1 radix 16 ,但那是1 radix 10 ! 主要归还不应该0 ? 那是不对的,对吗? 顺便问一下, return 0x0好吗?

C – 读取scanf直到feof(stdin),不输出错误

我在我的程序中使用scanf()函数来扫描整数。 我这样做的方式是: while (!feof (stdin)) if (scanf(“%d”, &height) != 1) { puts(“Wrong input!”); return 1; } 问题是,在实际执行EOF之后,我得到了错误的输入并返回1,因为scanf没有返回1.我该如何解决这个问题?

system()的返回值不是执行程序的返回值

我想执行一个可执行文件,其main()使用system()返回2。 这就是我所做的 #include #include int main(int argc, char *agrv[]) { char command[7]; strcpy(command, “./test1”); printf(“The return value: %d\n”, system(command)); return 0; } 和test1是 #include int main(void) { printf(“test1 has been executed and its return value is 2\n”); return 2; } 这就是我得到的 test1 has been executed and its return value is 2 The return value: 512 […]

main()的返回值会发生什么?

可能重复: main()应该在C / C ++中返回什么? #include int main() { return 0; } 在上面给出的代码片段中,main返回的返回0在哪里? 或者换句话说,在开始时称为主函数的函数。

C返回char 警告“返回局部变量的地址”

这是家庭作业的一部分。 我试图在我的方法getLine中读取并返回一行文件。 char *getLine(FILE *input) { char line[30]; if(fgets(line, sizeof(line), input)!=NULL) { return line; }else{ return NULL; } } 这似乎与我所教的关于指针的工作有关,但是我无法删除警告消息warning: function returns address of local variable [enabled by default] 。 该警告是指线路return line; 。 我的作业要求编译时没有警告或错误。 我不明白我做错了什么。 我发现的大多数帮助建议为文本行提供malloc-ing空间,但是我们还没有在课堂上讨论过这个问题,即使我已经在另一个类中完成了一些操作。 这真的是最好的方法吗? 如果是这样,我可以在该计划的任何地方免费吗?

在ASM中,c编译器如何处理函数的结构返回值

在谈到C函数的返回值时,返回值存储在EAX寄存器中。 假设我们正在谈论32位寄存器,欢迎整数,但是当我们返回这些类型时会发生什么: long long , long double ,一个大于32位的struct / union 。