Tag: 函数

在C中通过引用传递

我试图在C中使用传递引用,以便该函数可以修改传递给它的参数的值。 这是函数签名: int locate(char *name, int &s, int &i) 但是,当我尝试编译它时,我得到这个错误,特指上述行: 错误:在’&’标记之前预期’;’,’,’或’)’ 如果我删除’&’程序将编译,但它显然无法正常工作。 这有什么不对? 如何通过参考工作拨打电话?

C参数数组声明符

在C99中有变长数组,参数数组声明符中可以有静态限定符(和类型限定符): void f(int i, int *a); void f(int i, int a[]); void f(int i, int a[i]); void f(int i, int a[*]); // Only allowed in function prototypes. void f(int i, int a[static i]); 由于数组函数参数只是衰减到指针,以前的声明之间是否有任何实际差异,还是风格问题? 什么时候应该使用它们? 特别是, static限定符意味着什么? 该标准没有清楚地说明每种语法的原因。

C中函数调用的后缀或前缀增量的未定义行为

我在这个网站上看到,函数调用中的前缀增量或后缀增量可能会导致未定义的行为。 我最近经历过其中一个。 源代码是这样的: #include void call(int,int,int); int main() { int a=10; call(a,a++,++a); printf(“****%d %d %d***_\n”,a,a++,++a); return 0; } void call(int x,int y,int z) { printf(“%d %d %d”,x,y,z); } 输出结果为12 11 12 **** 14 13 14 *** _。 但是,当a在函数中首先打印时,它不应该是10吗? 它为什么变成12? 另外,为什么++从12减少到11? 有人可以请解释一下吗? 谢谢。

C函数使用指针更改字符串

我正在尝试创建一个从main函数更改char数组的函数,这就是我正在尝试做的事情: #include #include #include void change(char *a); int main() { char a[] = “hello”; printf(“\na = %s”, a); change(a); printf(“%\na = %s”, a); getch(); } void change(char *a) { a = “goodbye”; }

传递可变数量的参数

我们可以将可变数量的参数传递给c中的函数吗?

需要为函数添加前缀(void)

我最近遇到了一个相当不寻常的编码约定,其中对返回“void”的函数的调用以(void)为前缀。 例如 (void) MyFunction(); 它与函数调用有什么不同: MyFunction(); 它有没有任何优势,或者它是另一个不必要但有某种编码约定?

这段代码到底发生了什么?

我有一个包含递归函数的代码。 我在递归上浪费了很多时间,但我仍然无法得到它: #include void count(int); int main() { int x=10,z; count(x); } void count(int m) { if(m>0) count(m-1); printf(“%d”,m); } 当参数为10调用第一次count ,它满足条件,然后启动递归部分。 当函数调用自身时会发生什么? 我不明白。 请参考堆栈进行解释。

C中参数数量未知的函数

如何编写(如果可能的话……)一个在C99中采用未知数量参数的函数(返回类型是常量)?

在C中通过引用传递数组

我是C的新手,我有一个疑问。 由于C函数创建了它的参数的本地副本,我想知道为什么下面的代码按预期工作: void function(int array[]){ array[0] = 4; array[1] = 5; array[2] = 6; } int main(){ int array[] = {1,2,3}; function(array); printf(“%d %d %d”,array[0],array[1],array[2]); return 0; } 线路输出为4 5 6。 为什么这样做有效而以下情况不然? void function(int integer){ integer = 2; } int main(){ int integer = 1; function(integer); printf(“%d”,integer); return 0; } 在这种情况下,输出仅为1。 简短版本:为什么函数可以修改父变量的值,如果它们作为数组传递? 谢谢你们!

function参数评估顺序

以下操作的结果将打印出来: x=5; printf(“%d,%d,%d\n”,x,x<>2); 答案:5,20,1 我认为订单是未定义的,但我在许多网站上找到了面试问题。