Tag: 函数

C中的宏和函数有什么区别?

C中的宏和函数有什么区别? 请告诉我一个可以使用宏和function的应用程序?

如何通过指针在C中传递多个参数来调用函数?

我需要创建一个“函数调用者”函数:它接收一个generics函数指针( void * )和一个可变数量的参数作为参数,它必须调用此函数,传递参数,并返回一个指向返回值的generics指针。 但是,这个入口函数指针可能指向任何类型的函数(具有任何返回类型),甚至指向具有常量参数的函数。 它会是这样的: void * function_caller(void * function_pointer, …) { void * returning_value; // Call the function and get the returning value return returning_value; // this returning value will be properly casted outside } 这样,以下代码将起作用: int function1(int a, char b) { // … } void function2(float c) { // … } float […]

调用方法/函数时汇编语言会发生什么?

如果我有一个C ++ / C程序(语言无关紧要,只需说明一个概念): #include void foo() { printf(“in foo”); } int main() { foo(); return 0; } assembly中会发生什么? 我实际上并不是在寻找汇编代码,因为我还没有那么远,但基本原理是什么?

为什么main()不能在C中声明为静态?

为什么main必须被声明为具有外部链接? 为什么它不应该是静态的? 什么是外部联系?

将许多参数传递给C函数

如何将多个参数传递给C函数? 假设我有这个function: void f(int n, char* a, char* b, …) 我想要一个未定义数量的char *参数。 我怎么能这样做?

什么是printf的返回类型

这可能是个愚蠢的问题,但我很困惑。 这就是我清除疑虑的原因。 昨天,在我的采访中我得到了一个问题 char ch=”Hello”; printf(“%d”,printf(“%s”,ch)); 我认为printf是一个void类型函数,因为我从未见过要分配给任何变量的printf函数。 所以,我告诉它,它会显示编译错误 。 因为,编译器不会找到返回类型的printf函数。 但是我错了。 输出是Hello5 。 我真的很困惑,这是怎么来的。

strcpy的C实现不会改变变量值

所以,我正在尝试实现我自己的strcpy以更好地理解指针在C中是如何工作的,到目前为止我都处于亏损状态。 我尝试了很多不同的方法,尝试使用网络中的代码,以后可能会使用它,但即便是那些也无法工作。 我相信我可能会在main方法上以错误的方式调用函数。 我将变量的指针传递给函数,以便函数可以更改变量的值,并在函数调用中,我给出指针的地址,以便方法可以获取正确的数据。 至少我相信这是它的工作原理,无论如何我都能理解。 以下是函数和方法调用: function调用: void my_strcpy( char *dest, const char* src ) { dest = malloc(sizeof(src)); while ( src != ‘\0’ ) { *dest = *src; src++; dest++; } } 主要: int main () { const char* s = “Hello World”; char* test = ‘d’; my_strcpy( &test, &s ); // Suposed to […]

什么是c 中的省略号运算符

可能重复: 是什么意思……在C的参数列表中意味着什么? function fun1(…) { } 请告诉我有什么用途以及如何在c中使用省略号运算符。 谢谢,

为什么这个函数返回垃圾值

我正在编写一个程序并面临这个问题,以下函数用于返回垃圾值: int* foo(int temp){ int x = temp; return &x; } 当我修改它时,它工作正常: int* foo(int *temp){ int *x = temp; return x } 第一个版本出了什么问题?

如何从单个函数返回不同的类型

我有以下c代码: #include #include void *func(int a) { if (a==3) { int a_int = 5; int *ptr_int = &a_int; return (void *)ptr_int; } else if (a==4) { char a_char = ‘b’; char *ptr_char = &a_char; return (void *)ptr_char; } else { fprintf(stderr, “return value is NULL”); return NULL; } } int main (int argc, char *argv[]) […]