Tag: 数组

将动态大小的可变长度数组(VLA)初始化为0

以下代码行,在堆栈上创建一个可变长度数组: char name[length] = {‘\0’}; 生成以下编译器诊断: error: variable-sized object may not be initialized warning: excess elements in array initializer warning: (near initialization for ‘name’) 有哪些选项可用于初始化VLA? 我被迫使用如下行: memset(name, 0, sizeof(name)); 代替?

定义char a 和char(* a)之间有什么区别?

我只是想确保C语言中* a [5]和(* a)[5]之间的区别。 我知道* a [5]意味着数组a可以有五个元素,每个元素都是指针。 所以, char *p = “ptr1”; char *p2 = “ptr2”; char *a[5] = { p , p2 }; 它确实有意义。 但是,当我将*a[5]更改为(*a)[5]它不起作用。 char (*a)[5] = { p , p2}; (*a)[5]到底意味着什么? 此外, *a[5]和a[5][] , (*a)[5]和a[][5]之间有什么区别吗?

使用数组上的字符串切换语句

#include int main(){ char name[20]; printf(“enter a name “); scanf(“%s”,name); switch(name[20]){ case “kevin” : printf(“hello”); break; } printf(“%s”,name); getch(); } 它似乎不起作用。 这可能吗? 我的意思是我们可以用任何方式创建一个字符串的switch语句。 实际上如何解决问题?

C随机枢轴快速排序(改进分区function)

我是一名计算机科学专业的学生(刚刚开始),我正在从伪代码编写Quicksort的随机枢轴版本。 我已经编写并测试了它,但这一切都完美无缺…… 分区部分看起来有点过于复杂,因为它感觉我已经错过了某些东西或者过分了。 我无法理解它是否正常或者我是否犯了一些可以避免的错误。 长话短说:它有效,但如何做得更好? 在此先感谢您的帮助 void partition(int a[],int start,int end) { srand (time(NULL)); int pivotpos = 3; //start + rand() % (end-start); int i = start; // index 1 int j = end; // index 2 int flag = 1; int pivot = a[pivotpos]; // sets the pivot’s value while(i<j && flag) // main […]

c中的json数组解析

我试图解析一个json数组,我面临着问题。 我的数组是这样的: configure: { “id”: 4, “userId”: 107, “deviceMacAddress”: “00:06:66:30:02:3C”, “medication”: [{ “id”: 11, “version”: 18, “name”: “name1”, “unit”: “mg”, “forMed”: “for1”, “schedule”: [1] }, { “id”: 45, “version”: 1, “name”: “sdga”,, “unit”: “mg”, “forMed”: “54234”, “schedule”: [0,1,2,3,4,5,6] }], 我能够访问药物数组和打印总数组,但无法访问数组内的对象。 你能用C语言建议任何解决方案或任何例子吗? mycode的 int main(int argc, char **argv) { struct json_object *med_obj, *medi_obj, *tmp1_obj; struct array_list […]

在C中分配一个二维数组,其中一维固定

我想动态分配2D数组的1维(给出另一个维度)。 这有用吗: int NCOLS = 20; // nrows = user input… double *arr[NCOLS]; arr = (double *)malloc(sizeof(double)*nrows); 并释放它: free(arr)

char指针数组和2D数组之间有什么区别?

char指针数组和2D数组之间有什么区别?

在C中如何获取char字符串指针数组中的项目数

我想实现以下函数来打印通过指针数组引用的几个char字符串的内容。 如何在不传递总数作为函数参数的情况下确定有多少指针? 如果它是一个int类型的数组,那么就可以使用sizeof()函数,但是假设我的数组中的每个项都是一个指向char字符串的指针,并且每个字符串可能有不同的长度,我认为我不能使用这种方法。 void printCharArray(char *arr[]){ int length = sizeof(arr) / sizeof(char); /* this does not give correct number of items in the pointer array */ for (int i=1;i<=length; i++) { printf("Array item: [%s]",arr[i]); } }

打印数组元素

以下C程序的预期输出是打印数组元素。 但是当实际运行时,它不会这样做。 #include #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0])) int array[] = {23,34,12,17,204,99,16}; int main() { int d; for(d=-1;d <= (TOTAL_ELEMENTS-2);d++) printf("%d\n",array[d+1]); return 0; } 是什么原因 ?

用ctypes从python调用c:传递向量

我想使用ctypes从python调用ac函数。 从文档中我不明白如何将指针传递给向量。 我要调用的函数是: double f(int n, double* x) { int i; double p=1; for (i=0; i< n; i ++) p = p * x[i]; return p; } 我用void指针修改了函数,因此它变为f(int, void*) ,内部强制转换为double。 我做了以下事情: def f(x): n = len(x) libc = ‘/path/to/lib.so’ cn = c_int(n) px = pointer(x) cx = c_void_p(px) libc.restype = c_double L = libc.f(cn, cx) […]