Tag: 函数

从函数c返回二维数组的正确方法

我试过这个,但它不起作用: #include int * retArr() { int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; return a; } int main() { int a[3][3] = retArr(); return 0; } 我收到这些错误: 错误3错误C2075:’a’:数组初始化需要花括号 4 IntelliSense:返回值类型与function类型不匹配 我究竟做错了什么?

在C中使用qsort作为字符数组

我正在尝试使用qsort对字符数组进行排序。 我不明白为什么这不起作用。 我有一个指向比较函数的指针,如man页指定的那样。 有人可以告诉我有什么问题吗? 谢谢。 我的代码: #include #include #include int cmpfunc( const void *a, const void *b) { return *(int*)a – *(int*)b; } void AlphabetSoup( char str[] ) { qsort(str, (size_t) strlen(str), (size_t) sizeof(char), cmpfunc); printf(“%s\n”, str); } int main() { char str1[] = “bcead”; AlphabetSoup(str1); return 0; } 输出:当我期待abcde时的dabce 。

如何在不使用if或for的情况下查找数字是正数,负数还是零?

我想在微处理器中实现符号和零标志设置。 因此,我需要编写一个函数来查找数字是正数,负数还是零而不使用if或for循环,并且只允许使用布尔和位运算符 。 我做了以下。 但是如何实现zero条件呢? int status (int x) { int sign = (x >> 31); return sign; } 有什么建议 ?

数组参数中的数组长度

我正在阅读C编程: KNKing 的现代方法学习C编程语言,本章讲述函数和数组参数。 解释了可以使用这些结构来表示数组参数的长度: 1。 void myfunc(int a, int b, int[a], int[b], int[*]); /* prototype */ void myfunc(int a, int b, int n[a], int m[b], int c[a+b+other_func()]) { … /* body */ } 2。 void myfunc(int[static 5]); /* prototype */ void myfunc(int a[static 5]) { … /* body */ } 所以问题是: 一个。 示例1中的构造是纯粹的装饰还是它们对编译器有影响? 湾 在这种情况下, […]

如何安静C编译器关于函数指针需要任意数量的参数?

我在一个struct中有一个函数指针,它在运行时动态设置为我代码中不同位置的另一个函数的地址。 它在我的头文件中定义如下: void *(*run)(); 在编译期间,我收到以下关于此的警告: warning: function declaration isn’t a prototype 这个警告是良性的,因为指针在我的代码中的许多地方用来调用它指向的函数,一切正常。 但是,我真的想要保持警告。 如果我改成它: void *(*run)(void); 我使用它时会遇到编译错误,因为使用指针的各种函数具有不同数量的参数,并且在括号内表示void告诉编译器它不接受任何参数。 我不能使用va_list或类似的任何东西,因为这只是指向另一个函数的指针,我使用单个指针,因为它保持代码干净和简单。 我可以通过将此添加到我的编译器标志来使警告静音: -Wno-strict-prototypes 但是如果我能避免它,我宁愿不用标志来禁用编译器警告。 所以我的问题是: 我如何在代码中注释这个函数指针,使编译器满意它接受任意数量的任何类型的参数这一事实? 代码完美无缺。 我只想让警告消失。

C函数声明在另一个函数内

任何人都可以向我解释这些问题: int xyz( void ) { extern void abc( void ); } 函数定义中的函数声明? 还是我想念一些东西?

typedef一个函数指针类型

我想声明一个指向函数的指针类型,所以我尝试: typedef void (*print)(void); 工作完美 void (*print)(void); p是一个ponter变量,而不是一个类型。 typedef (void) (*print)(void); 错误预期标识符’(”””’ typedef void (*)(void) Print; 错误:在’打印’之前预期’=’,’,’,’;’,’asm’或’_ attribute _’。 我的问题是: 我是否必须使用typedef来声明函数指针类型? 为什么typedef (void) (*print)(void); 是错的 ? what ()在这里意味着什么? 为什么我不能用这种方式写: typedef void (*)(void) Print ?

function指针声明 – __P做什么?

通常的函数指针定义forms是: int function(int, int); int (*ptr)(int, int); 但我今天看到一张我不明白的表格。 有人能解释一下吗? int (*close) __P((struct __db *));

c中是否有一个函数会返回char数组中char的索引?

c中是否有一个函数会返回char数组中char的索引? 例如: char values[] = “0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”; char find = ‘E’; int index = findInedexOf( values, find );

在C / C ++中引用Lua函数

我有一个函数嵌套在一组表中相对较深。 在C / C ++中是否有一种方法可以获得该函数的“引用”,并在需要使用它时将其(和args)推送到堆栈中?