Tag: 函数

如何在C中实现连续分数的自然对数?

我有一点问题。 从这个公式创建一些东西: 这就是我所拥有的,但它不起作用。 Franky,我真的不明白它应该如何工作..我试着用一些不好的指令来编写代码。 N是迭代次数和分数的一部分。 我认为它以某种方式导致递归,但不知道如何。 谢谢你的帮助。 double contFragLog(double z, int n) { double cf = 2 * z; double a, b; for(int i = n; i >= 1; i–) { a = sq(i – 2) * sq(z); b = i + i – 2; cf = a / (b – cf); } return (1 […]

c函数原型不匹配只是一个警告

请看下面的代码 #include void printOut() { static int i = 0; if (i < 10) { printOut(i); } } int main(int argc, char *argv[]) { return 0; } 我猜应该有一个错误,因为我调用了不存在的函数prototype.Actually,代码编译好mingw5编译器,这对我来说很奇怪,然后我改为Borland Compiler,我收到一条警告消息说没有printOutfunction原型,这只是一个警告吗? 更重要的是,代码执行良好,没有任何弹出错误窗口。

两个带有void和空参数列表的函数声明

我想知道为什么以下代码: void foo(void); void foo() { } 在gcc中有效。 在C中,没有重载和上面的声明(实际上,其中一个是定义)声明两个不同的函数(第一个不接受任何参数,第二个可以接受任何参数)类型)。 但是,如果我们为第一个函数提供定义: void foo(void) { } void foo() { } 由于重新定义,此次编译失败。 但是 ,第一个代码仍然是正确的,可能会令人困惑,如下所示: void foo(void); int main(void) { foo(); //OK //foo(5); //Wrong, despite ->the definition<- allows it } void foo() { } 另一方面,这样的事情是无效的: void foo(int); void foo() //error: number of arguments doesn’t match prototype { } 我认为与我的第一个前面的代码相比,编译器的行为有点奇怪。 […]

为什么我不能为函数的forms参数指定存储类?

当我这样做时,代码工作正常: #include void test( int a) { printf(“a=%d\n”,a); } int main() { test(10); return 1; } 但是,当我这样做 #include void test( auto int a) // Or static int a Or extern int a { printf(“a=%d\n”,a); } int main() { test(10); return 1; } 它会产生错误, 错误:为参数’a’指定的存储类 为什么会出错? 内部会发生什么(内存管理)? 但是当我这样做时,它没有任何错误地工作正常: void test( register int a) { printf(“a=%d\n”,a); } […]

回调函数:void(* func)(int)和void(func)(int)之间的区别

所以让我说我有一个function: void foo (int i){ cout << "argument is: " << i << endl; } 我将此function传递给: void function1 (void(callback)(int), int arg){ callback(arg); } void function2 (void(*callback)(int), int arg){ callback(arg); } 这两个function是否相同? 这两者有什么区别吗?

从C中的函数返回多维数组

从c中的函数返回多维数组的最佳方法是什么? 假设我们需要在函数中生成一个多维数组并在main中调用它,最好将它包装在一个结构中,还是只返回一个指向堆内存的指针? int *create_array(int rows, int columns){ int array[rows][columns] = {0}; return array; } int main(){ int row = 10; int columns = 2; create_array(row,columns); } 上面的代码,只是为了勾勒出我想到的基本程序。

int 和int *之间的区别作为函数参数

这是一个面试问题: int []和int*之间有什么区别,它们都是函数的输入参数。 f(int a[] , int* b) 我的回答: 对于f() ,它们具有相同的function。 第一个是a[]第一个元素的起始位置。 第二个指向一个int 。 但是,如何在不传递其他论据的情况下将它们彼此区分开来?

在C中创建数组并将指针传递给所述数组以实现

我已经阅读了几篇与我关于C的问题相关的post。这确实帮助我减少了我的错误。 但是,我仍然遇到其他post无法解决的问题。 基本上,这就是我想要做的。 在main中定义一个数组。 我将指向此数组的指针传递给函数。 此函数将打开一个文件,解析该文件,并将该文件中的信息放入其指针传入的数组中。好吧,它失败了。 我得到的错误是: work.c:12: error: array type has incomplete element type work.c: In function ‘main’: work.c:20: error: type of formal parameter 1 is incomplete work.c: At top level: work.c:25: error: array type has incomplete element type 整个代码如下。 但我认为你只需要关注我如何定义我的数组和指针等等。 #include #include //Defining Preprocessed Functions char readFile(char array[][], int, int); //void displayStudentInfo(int*); //Implements […]

字符串交换适用于char **但不适用于char *

在这个程序中,我交换了前两个名字 #include void swap(char **,char **); main() { char *name[4]={“amol”, “robin”, “shanu” }; swap(&name[0],&name[2]); printf(“%s %s”,name[0],name[2]); } void swap(char **x,char **y) { char *temp; temp=*x; *x=*y; *y=temp; } 这个程序运行得很完美但是当我使用function swap(char *,char *)它不会交换地址为什么? 为什么我必须使用指针指针?

C编程(函数指针转换)

int eax = ((int(*)())(“\xc3 <- This returns the value of the EAX register"))(); 这是怎么回事? 字符串被转换为函数指针