Tag: 函数

旧式C函数声明

这是一个简单的函数delcared并使用旧样式语法定义: #include void error(message,a1,a2,a3,a4,a5,a6,a7) char *message; char *a1,*a2,*a3,*a4,*a5,*a6,*a7; { fprintf(stderr,message,a1,a2,a3,a4,a5,a6,a7); } int main () { error(“[ERROR %d]: %s.\n”,110,”Connection timed out”); return 0; } 它可以编译并正确运行以进行打印: [ERROR 110]:连接超时。 我读到这个样式没有相关的原型,但是如何在运行时自动将int转换为char *,甚至提供的参数少于声明的参数?

如何使用rand函数在特定范围内生成数字?

我想在特定范围内制作随机数,例如“选择18到35之间的随机数”? 我怎么能用rand()函数做到这一点?

避免C程序中的主(入口点)

是否可以避免C程序中的入口点(主)。 在下面的代码中,是否可以调用func()调用而无需通过以下程序中的main()调用? 如果是,如何做,何时需要,为什么要给出这样的规定? int func(void) { printf(“This is func \n”); return 0; } int main(void) { printf(“This is main \n”); return 0; }

关于Pointers To函数声明中的函数

#include #include int fun1() { printf(“I am fun1.”); return 0; } int fun2(int fun()) { fun(); return 0; } int main() { fun2(fun1); return 0; } 上面的程序可以运行。 就我而言,我可以理解int fun2(int (*fun)()) ,但我不知道int fun2(int fun())工作的。 谢谢。

strcpy()返回值

标准C库中的许多函数,尤其是用于字符串操作的函数,最着名的是strcpy(),共享以下原型: char *the_function (char *destination, …) 这些函数的返回值实际上与提供的destination相同。 为什么你会浪费多余的回报价值? 这样的函数无效或返回有用的东西更有意义。 我唯一的猜测是,为什么将函数调用嵌套在另一个表达式中更容易,更方便,例如: printf(“%s\n”, strcpy(dst, src)); 还有其他合理的理由certificate这个成语是正确的吗?

C – 在函数中分配矩阵

我试图使用一个带有尺寸和三指针的函数来分配矩阵。 我已经分配了一个int **(设置为NULL),我将其地址作为函数的参数传递。 由于某种原因,这给了我一个mem访问冲突。 void allocateMatrix(int ***matrix, int row, int col) { int i; if((*matrix = (int**)malloc(row * sizeof(int*))) == NULL) { perror(“There has been an error”); exit(EXIT_FAILURE); } for(i = 0; i < row; ++i) { if((*matrix[i] = (int*)malloc(col * sizeof(int))) == NULL) { perror("There has been an error"); exit(EXIT_FAILURE); } } } /* […]

C函数const多维数组参数中的奇怪警告

我对这段代码有一些奇怪的警告: typedef double mat4[4][4]; void mprod4(mat4 r, const mat4 a, const mat4 b) { /* yes, function is empty */ } int main() { mat4 mr, ma, mb; mprod4(mr, ma, mb); } gcc输出如下: $ gcc -o test test.c test.c: In function ‘main’: test.c:13: warning: passing argument 2 of ‘mprod4’ from incompatible pointer type test.c:4: note: […]

从函数返回数组/指针

我正在尝试创建一个从字符串派生的新整数数组。 例如 : char x[] = “12334 23845 32084”; int y[] = { 12334, 23845, 32084 }; 我无法理解如何从函数中返回一个数组(我理解不可能)。 我最初尝试过: /* Convert string of integers into int array. */ int * splitString( char string[], int n ) { int newArray[n]; // CODE return ( newArray ); } int main( void ) { int x[n] = splitString( […]

参数传递C – 指针,地址,别名

有人可以解释一下C参数传递的区别吗? 根据教授的说法,有4种不同的传递参数的方法 呼叫按值 地址呼叫(指针) 调用 – 别名 全局变量/静态变量 如果你能举一个例子,我将非常感谢,你的工作将受到赞扬。

何时数组名称或函数名称“转换”为指针? (在C中)

1) 误解 : 每当使用C语言声明数组时,都会隐式创建指向数组第一个元素的指针(数组的名称)。 (是吗?我不这么认为!) 这个页面的前两行(虽然我不确定信息的正确性)说明相同。 正如我们所看到的,当我们声明一个数组时,为数组的单元分配一个连续的内存块,并且还分配一个指针单元(适当类型)并初始化为指向数组的第一个单元。 但是当我输出该指针中包含的地址和该指针的地址时 ,它们会变成相同的。 所以,我认为毕竟不会创建指针。 2)我从这个问题中选了这个 。 在大多数情况下,数组名称将转换为指针。 任何人都可以详细解释编译器何时决定将数组名转换为指针, 为什么 ? PS:请解释一下function 。 同样在这个链接中,给出了一个例子,说对于函数int square(int,int) ,任何square , &square , *square , **square指向相同的函数指针。 你可以解释吗? 编辑:代码段 int fruits[10]; printf(“Address IN constant pointer is %p\n”, fruits); printf(“Address OF constant pointer is %p\n”, &fruits); 输出: Address IN constant pointer is 0xbff99ca8 Address OF constant […]