Tag: 数组

如何在C中定义函数数组

我有一个包含这样的声明的结构: void (*functions[256])(void) //Array of 256 functions without arguments and return value 在另一个函数我想定义它,但有256个函数! 我可以这样做: struct.functions[0] = function0; struct.functions[1] = function1; struct.functions[2] = function2; 等等,但这太累了,我的问题是有办法做这样的事吗? struct.functions = { function0, function1, function2, function3, …, }; 编辑 :Chris Lutz所说的修正了语法错误。

将一个字符串数组作为参数传递给C中的函数

我想要一个简单的函数,它接收一个字符串并在一些解析后返回一个字符串数组。 所以,这是我的function签名: int parse(const char *foo, char **sep_foo, int *sep_foo_qty) { int i; char *token; … strcpy(sep_foo[i], token); /* sf here */ … } 然后我称之为: char sep_foo[MAX_QTY][MAX_STRING_LENGTH]; char foo[MAX_STRING_LENGTH]; int sep_foo_qty, error; … error = parse(foo, sep_foo, &sep_foo_qyt); … 这样我在编译时会收到警告: warning: passing argument 2 of ‘parse’ from incompatible pointer type 然后在标记为/ * sf的行中执行期间出现分段错误* / 我的C代码有什么问题? […]

什么是`int * userMask `指向?

我正在修改一些代码并遇到一个声明,我无法理解: int *userMask[3][4] = {0}; 究竟是什么指向? 它是一个矩阵,每个元素都是指针吗? 或者它指向一个大小的矩阵[3] [4]? 谢谢 我想我的问题是userMask[2][maskElement][user]在声明为int时如何工作。 userMask不能为int[]以使其正常工作吗? 我不能理解这个权利…… 请注意,感谢您对cdecl Robert的建议。 但是,有没有人知道如何在XP命令提示符中使用它? 我能得到的只是语法错误:(

使用C中的函数更改数组?

我想调用一个函数,我希望该函数将程序中字符串或数组的内容更改为常量。 伪代码: some_array = “hello” print some_array #prints “hello” changeArray(some_array) print some_array #prints “bingo” 我知道我必须将指针传递给该函数。 这是我写的, void changeArray(char *arr){ arr = “bingo”; } int main(int argc, const char* argv[]){ char *blah = “hello”; printf(“Array is %s\n”,blah); changeArray(blah); printf(“Array is %s\n”,blah); return EXIT_SUCCESS; } 我怎样才能做到这一点?

数组类型char 不可分配

那么这是我的第一篇文章。 我一直在尝试做这个选择选择的东西,我希望用户只选择数字而不是键入它们(更容易)但是当我希望数字等于一个字符串时,它说“数组类型char[30]不是分配”。 即使在后面我也放了分号。 #include int main() { int choice1; char word[30]; printf(“You have three choice.\n”); printf(“[1] Jump [2] Run [3] Dance\n”); scanf(“%d”,&choice1); if (choice1 == 1) { word = “Jump” //Error #1 } else if (choice1 == 2) { word = “Eat” //Error #2 } else if (choice1 == 3) { word = “Sleep”; //Error […]

如何制作动态大小的数组? 动态数组的一般用法(也许是指针)?

我正在尝试制作一个程序 接受用户输入(假设所有这些都是int ) 将它存储在没有起始大小的数组中(即不是 – > array[5]; ); 然后 使用存储在数组中的信息用于任何险恶的目的。 我正在寻求帮助,以便我可以根据需要自行学习如何做到这一点。 如何在没有设置大小的情况下制作动态数组? 如何使用/访问/访问上述数组中的元素? 阅读对我来说不够解释。 我知道这是一个非常无聊的问题,是的,我是一个菜鸟,但要改变我需要一些帮助。

数组初始化C.

这个初始化是什么意思: char arr[10] = { 0, }; 我熟悉char arr[10] = {0}; 它将所有元素设置为零,并使用char arr[10] = {1,2}; 它将前两个元素设置为1和2(ascii),其余元素设置为0.我不熟悉上面的格式。 快速测试显示它可能就像char arr[10] = {0}; ,还有其他我不知道的意思吗?

使用malloc动态创建字符串数组

我正在尝试使用malloc在C中创建一个字符串数组。 数组将保留的字符串数量可以在运行时更改,但字符串的长度将始终保持一致。 我试过这个(见下文),但遇到了麻烦,我们非常感谢任何正确方向的提示! #define ID_LEN 5 char *orderedIds; int i; int variableNumberOfElements = 5; /* Hard coded here */ orderedIds = malloc(variableNumberOfElements * (ID_LEN + 1)); 最终我希望能够使用数组来执行此操作: strcpy(orderedIds[0], string1); strcpy(orderedIds[1], string2); /* etc */

字符串和char数组如何在C中工作?

我见过的导游似乎没有解释得这么好。 我的意思是,你可以为char*分配内存,或者写char[25]而不是? 有什么不同? 还有文字,不能被操纵? 如果要将固定字符串分配给变量,该怎么办? 比如, stringVariable = “thisIsALiteral” ,那么你之后如何操纵呢? 有人可以直接在这里设置记录吗? 在最后一种情况下,使用文字,你如何处理空终止? 我觉得这很令人困惑。 编辑:真正的问题似乎是,据我所知,你必须兼顾这些不同的结构,以完成甚至简单的事情。 例如,只有char *可以作为参数或返回值传递,但只能为char[]分配文字和修改。 我觉得很明显,我们经常/总是需要能够做到这两点,这就是我的陷阱所在。

为什么PostgreSQL数组在C中的访问速度比在PL / pgSQL中快得多?

我有一个表模式,其中包含一个int数组列,以及一个自定义聚合函数,它对数组内容求和。 换句话说,给出以下内容: CREATE TABLE foo (stuff INT[]); INSERT INTO foo VALUES ({ 1, 2, 3 }); INSERT INTO foo VALUES ({ 4, 5, 6 }); 我需要一个返回{ 5, 7, 9 }的“sum”函数。 正确运行的PL / pgSQL版本如下: CREATE OR REPLACE FUNCTION array_add(array1 int[], array2 int[]) RETURNS int[] AS $$ DECLARE result int[] := ARRAY[]::integer[]; l int; BEGIN — — […]