Tag: 数组

确定字符串文字的长度

给定一个指向字符串文字的指针数组: char *textMessages[] = { “Small text message”, “Slightly larger text message”, “A really large text message that ” “is spread over multiple lines” } 如何确定特定字符串文字的长度 – 比如第三个? 我尝试使用sizeof命令如下: int size = sizeof(textMessages[2]); 但结果似乎是数组中指针的数量,而不是字符串文字的长度。

C中的Arraylist无法正常工作

我目前正在编写一个程序来实现C语言中的arraylist(或动态数组)…我认为我已经完成了70-80%,但是,我发现我的代码在测试时遇到了严重的问题。机器 简而言之,我将一组字符串(char *)插入到我的arraylist中,并试图在操作几次后显示它们。 但是,这就是我得到的: CHECK: 1 CHECK: 2 CHECK: ܗ¿èۗ¿ CHECK: EàEàHAÿE؉Ⱥ CHECK: 5 CHECK: 6 不幸的是,即使我已经两次检查了我的代码,我仍然无法弄清楚代码中的问题所在。 arraylist.h #ifndef _ARRAYLIST_H #define _ARRAYLIST_H #include typedef char* value_type; struct arraylist { int size; value_type* data; }; extern void arraylist_initial(struct arraylist *list); extern int arraylist_get_size(const struct arraylist list); extern value_type* arraylist_get_data_collection(const struct arraylist list); extern void arraylist_set_data_collection(struct arraylist […]

为什么我的程序中存在无限循环?

int main(void) { int i; int array[5]; for (i = 0; i <= 20; i++) array[i] = 0; return 0; } 为什么上面的代码陷入无限循环?

c中的查找表

我在C中创建一个查找表当我定义它时: typedef struct { char* action; char* message; } lookuptab; lookuptab tab[] = { {“aa”,”bb”}, {“cc”,”dd”} }; 它编译没有错误,但当我做这样的事情: typedef struct { char* action; char* message[]; } lookuptab; lookuptab tab[] = { {“aaa”, {“bbbb”, “ccc”}}, {“cc”, {“dd”, “eeeee”}} }; 我收到以下错误: 错误:在嵌套上下文中初始化灵活数组成员 错误:(接近初始化’tab [0] .message’) 如何在第二个示例中初始化选项卡数组? 注意:我知道选项卡数组中的所有值。 更新:消息可以是不同的大小,例如 typedef struct { char* action; char* message[]; } lookuptab; […]

使用指针/ malloc创建2D数组,然后将其打印出来

我正在尝试编写2个函数,一个用于读取矩阵(二维数组),另一个用于打印出来。 到目前为止我有: /* Read a matrix: allocate space, read elements, return pointer. The number of rows and columns are given by the two arguments. */ double **read_matrix(int rows, int cols){ double **mat = (double **) malloc(sizeof(double *)*rows); int i=0; for(i=0; i<rows; i++){ /* Allocate array, store pointer */ mat[i] = (double *) malloc(sizeof(double)*cols); //what to […]

使用包含浮点数组的OpenCL将struct传递给GPU

我目前有一些数据,我想传递给我的GPU,并乘以2。 我创建了一个可以在这里看到的结构: struct GPUPatternData { cl_int nInput,nOutput,patternCount, offest; cl_float* patterns; }; 此结构应包含浮点数组。 我不会知道浮动数组,直到用户指定的运行时间。 主机代码: typedef struct GPUPatternDataContatiner { int nodeInput,nodeOutput,patternCount, offest; float* patterns; } GPUPatternData; __kernel void patternDataAddition(__global GPUPatternData* gpd,__global GPUPatternData* output) { int index = get_global_id(0); if(index patternCount) { output.patterns[index] = gpd.patterns[index]*2; } } 这是主机代码: GPUPattern::GPUPatternData gpd; gpd.nodeInput = ptSet->getInputCount(); gpd.nodeOutput = ptSet->getOutputCount(); gpd.offest […]

C结构中的数组

我想在一个struct中有两个数组,这些数组在start时初始化但需要进一步编辑。 我需要三个结构实例,这样我就可以索引到一个特定的结构并按我的意愿修改。 可能吗? 这是我认为我可以做但我得到错误: struct potNumber{ int array[20] = {[0 … 19] = 10}; char *theName[] = {“Half-and-Half”, “Almond”, “Rasberry”, “Vanilla”, …}; } aPot[3]; 然后我按如下方式访问结构: printf(“some statement %s”, aPot[0].array[0]); aPot[0].theName[3]; …

C对arrays的厌恶

在关于C的介绍性书籍中,经常声称指针或多或少是数组。 充其量只是一个巨大的简化吗? C中有一个数组类型,它的行为与指针完全不同,例如: #include int main(int argc, char *argv[]){ int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int *b = a; printf(“sizeof(a) = %lu\n”, sizeof(a)); printf(“sizeof(b) = %lu\n”, sizeof(b)); return 0; } 给出输出 sizeof(a) = 40 sizeof(b) = 8 或者作为另一个例子, a = b会给出编译错误(GCC:“赋值给具有数组类型的表达式”)。 当然,指针和数组之间存在密切关系 ,在某种意义上说,数组变量本身的内容是第一个数组元素的内存地址,例如int a[10] = {777, 1, 2, […]

当我应用sizeof运算符时,为什么会得到不同的结果?

我有这个程序 #include int main() { char arr[100]; printf(“%d”, (int)sizeof(0,arr)); } 这在编译为C文件时打印4,并将100打印为C ++文件。 为什么? 我正在使用gcc。

数组指针如何存储其大小?

#include “stdio.h” #define COUNT(a) (sizeof(a) / sizeof(*(a))) void test(int b[]) { printf(“2, count:%d\n”, COUNT(b)); } int main(void) { int a[] = { 1,2,3 }; printf(“1, count:%d\n”, COUNT(a)); test(a); return 0; } 结果很明显: 1, count:3 2, count:1 我的问题: 声明“a”时存储的长度(计数/大小)信息在哪里? 当“a”传递给test()函数时,为什么长度(计数/大小)信息会丢失?