Tag: 数组

*(a ++)给出错误但不是*(a + 1)?? 其中a是数组名称?

在以下代码中: void main() { char a[]={1,5,3,4,5,6}; printf(“%d\n”,*(a++)); //line gives error: wrong type argument to increment printf(“%d\n”,*(a+1)); } 第4行和第5行之间有什么区别。我没有收到第5行的任何错误或警告。

指向数组类型的指针,c

如果我要说 int (*i)[10] = malloc(size(int *) * 5); 这会分配看起来像的内存 {(int *),(int *),(int *),(int *),(int *)} 现在,当我取消引用这些指针中的任何一个时,我得到了未初始化的内存, 因此,除了问责制原因之外,是否需要在(* i)之后包含[10]而不是使用双指针? 使用10实际上是否为10个整数分配空间,因为如果它确实我们将无法访问它?

在C中传递多维数组

我目前正在努力学习C,我遇到了一个我无法解决的问题。 考虑: #include #include #include #define ELEMENTS 5 void make(char **array, int *array_size) { int i; char *t = “Hello, World!”; array = malloc(ELEMENTS * sizeof(char *)); for (i = 0; i < ELEMENTS; ++i) { array[i] = malloc(strlen(t) + 1 * sizeof(char)); array[i] = strdup(t); } } int main(int argc, char **argv) { char […]

创建和返回数组的函数会导致问题

我试着编写一个返回像素颜色随机数组的函数,所以当我调用randomPalette(i) ,该函数将创建一个i颜色的随机数组。 以下是我的代码。 它表示random[colors]错误表达式必须具有恒定值。 我不知道为什么。 怎么解决? pixel* randomPalette(int colors){ pixel random[colors] ; int i, x; srand(time(NULL)); //generate a random seed for (i = 0; i < colors; i++){ x = rand() % 256; random[i].r = x; random[i].g = x; random[i].b = x; } return random; }

理解指向malloc和free的指针

指针在C中是一个非常棘手的事情。因为很多人很难理解它,所以为了更好地理解我写了下面的代码: #include #include int main(int argc, char *argv[]) { int *p; // pointer -> will be dynamic allocated int *a; // array -> will be dynamic allocated // print before allocate memory (1) printf(“&p: %p\tp: %p\t*p: %d\n”, &p, p, *p); printf(“&a: %p\ta: %p\t*a: %d\n”, &a, a, *a); printf(“\n”); // allocate memory (2) p = (int […]

如何声明具有任意大小的数组

好的,这是一个C编程的家庭作业问题。 但我真的被卡住了。 我要求用户输入单词,然后我将输入插入数组,但我无法控制用户键入的单词数。 我想我要问的是如何在C中声明一个数组而不声明其长度并且不询问用户应该是多长。 我知道这与malloc有关,但是如果你能给我一些如何做的例子,我会非常感激。

C ++数组大小声明和const

我只是跳进C ++,来自C 在C(89/90)中, const实际上不是常量(与# #define , enum或literal相反),而是一旦设置为只读。 即,我可以: const int x = rand(); 这很好 – 直到运行时才知道x的点。 因此,我不能 int arr[x]; // error – x is not a compile-time constant 然后,C标准之一(99?)继续进行并允许可变长度数组。 虽然我通常使用C语言中的ANSI标准进行编码,但实际上这已经产生了影响,因为我正在尝试拾取C ++ 11。 据我所知,C ++不允许使用可变长度数组。 但是,许多编译器允许它作为扩展(GCC?)。 问题是,现在我正在尝试学习C ++ 11,我无法判断我编写的是有效的C ++,还是C ++扩展的C99兼容性。 例如: std::default_random_engine e{}; std::uniform_int_distribution d{}; const int x{d(e)}; int arr[x]; // compiles 我不知道这是否是有效的C ++。 显然,直到运行时才知道x的值。 […]

从函数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类型不匹配 我究竟做错了什么?

数组划分 – 划分存储在数组中的两个数字的最佳方法是什么?

我有两个数组(被除数,除数): dividend[] = {1,2,0,9,8,7,5,6,6}; divisor[] = {9,8}; 我需要结果(被除数/除数): quotient[] = {1,2,3,4,5,6,7}; 我使用数组减法做了这个: 将除数从被除数中减去,直到被除数为0或小于除数,每次递数为1, 但这需要很长时间。 有一个更好的方法吗?

数组何时充当c中的指针?

我知道数组名称可以用作指针(虽然它是转换后的forms),但我的问题是,是否有一些其他实例,其中数组充当指针。