Tag: 函数

在c中编写函数指针

我最近在读代码,发现函数指针写成: int (*fn_pointer ( this_args ))( this_args ) 我经常会遇到这样的函数指针: return_type (*fn_pointer ) (arguments); 这里讨论类似的事情: // this is a function called functionFactory which receives parameter n // and returns a pointer to another function which receives two ints // and it returns another int int (*functionFactory(int n))(int, int) { printf(“Got parameter %d”, n); int (*functionPtr)(int,int) = […]

如何返回多个值并将它们存储在main()函数中?

我想从函数返回两个或多个值,并希望将这些值存储到main()函数中。 我试图通过以下代码来做到这一点。 #include #include int main() { int num1, num2, s, p; printf(“Enter tow numbers: “); scanf(“%d %d”, &num1, &num2); p = function(num1, num2); s = function(num1, num2); printf(“Sum is: %d\nProduct is: %d”, p, s); return 0; } int function(int x, int y) { int sum, product; sum = x+y; product = x*y; return product, […]

在C中将指向函数的指针作为只读方式传递

正如标题所说,我可以传递指向函数的指针,因此它只是指针内容的副本吗? 我必须确保该function不会编辑内容。 非常感谢你。

在函数内使用realloc

我很抱歉,我知道很多相关的问题已经被问到了,所以我会保持简单。 尽管经过了多年的编程,我找不到正确的语法来调整和修改函数内的数组(或几个)。 例如,假设我想要一个函数用一组“n”数字填充数组,其中“n”在数组中定义: int main(int argc, char *argv[]) { float *data = NULL int n = myfunction(data); for(i=0;i<n;i++) printf("%f\n",data[i]); free(data); } int myfunction(float *input) { int i,n=10; input = (float *) realloc( input, n*sizeof(float) ); if(input!=NULL) { for(i=0;i<n;i++) input[i] = (float)i; return(n); else return(-1) } 我知道这不会起作用,因为我可能需要使用指向指针的指针,但我无法解析指针的哪个组合,指针到指针以及地址表示法在函数内部和外部使用。 任何简单的建议赞赏!

C:为一个函数参数发送不同的结构

我有一个使用OpenGL绘制圆的函数,我想传递一个包含x和y坐标以及半径的结构。 问题是这个相同的函数必须与3个不同的结构一起使用,所有结构都包含坐标,半径和绘制函数不使用的其他一些东西。 有没有办法只为3个不同的结构有一个参数(一次只发送一个)。 我希望我已经足够精确了。 PS:function必须是“抽象的”。

如果没有明确的“返回”,则函数将返回什么

当我忘记编写函数的return子句时,我遇到了这个问题,但是gcc没有警告或错误。 我修复了它,但开始想知道为什么函数会在没有return情况下return 无意义的东西。 以下是我尝试过的一些例子: #include “stdio.h” #include “stdlib.h” int func1 () { int i; i = 2; } int func2 (int a) { int i = a+3; } int func3 () { int i; for (i = 0; i <= 1; i++); } int main(void) { int a = 0; int b = 0; int […]

全局变量和返回C函数中的多个可变长度数组(指针)

我有一些编程经验,但对C没什么用。 我有一个相当大的C文件。 在其中有多个函数按顺序执行 – 因此在这种特殊情况下,实际上没有函数被调用两次,它们被分解以便于阅读,因为每个函数仍然有一个单独的目的。 这个程序对几个长度可变的double数组进行了大量的计算,因此它们都是指针。 两个问题: 1)从开头计算一次然后作为许多后续函数的输入的变量 – 我应该在这个文件中使它们成为全局变量吗? 根据我在高级语言编程的经验,全局变量并不好。 这不是C的情况,为什么? 2)当我的函数中的一个想要返回多个指针(例如,每个指向一个长度为n的双数组)时,请说double * p1,double * p2,double * p3是相关的,我可以将它们组合成一个结构: struct pointers { double *p1, *p2, *p3; } ptr; foo1将输入double *作为输入,并计算ptr-> p1,ptr-> p2,ptr-> p3,然后ptr将作为foo2的输入。 我应该写吗? struct pointers *foo(double *input) 要么 void foo1(double *input, struct pointers ptr) 要么 void foo1(double *input, struct pointers *ptr) 为什么C函数通常是’void’函数,除非它只返回一个int或double变量? 输入和输出都作为参数 – […]

创建和返回数组的函数会导致问题

我试着编写一个返回像素颜色随机数组的函数,所以当我调用randomPalette(i) ,该函数将创建一个i颜色的随机数组。 以下是我的代码。 它表示random[colors]错误表达式必须具有恒定值。 我不知道为什么。 怎么解决? pixel* randomPalette(int colors){ pixel random[colors] ; int i, x; srand(time(NULL)); //generate a random seed for (i = 0; i < colors; i++){ x = rand() % 256; random[i].r = x; random[i].g = x; random[i].b = x; } return random; }

写交流函数,产生一个随机数,或一对随机数,或给定特定范围的随机数的三元组

我必须为3个不同的案例生成随机数。 一世。 1个骰子ii。 一对骰子iii。 我的问题是:1。请建议我使用良好的逻辑来生成所有3个案例的随机数。 2.当我考虑2个骰子的而不是1时,逻辑会改变吗? 3.我们必须生成一个随机数的范围会影响随机函数的逻辑吗?

为什么在传递参数时使用const会给我一个警告?

为什么这段代码会给我一个警告:从不兼容的指针类型传递“test”的参数1? 我知道这是关于char之前的const,但为什么呢? void test(const int ** a) { } int main() { int a=0; int *b=&a; int **c=&b; test(c); return 0; }