Tag: 数组

仅打印那些总和为10-C程序的3位数组

输出: 1 2 3 4 1 2 7 1 3 6 1 4 5 1 9 2 3 5 2 8 3 7 4 6 10 预期产出: 1 2 7 1 3 6 1 4 5 2 3 5 我只想要那些总和为10并且也只有3位的数字对,即应该显示总和为10的3个不同数字对,其他所有其他对都跳过或不显示。 下面是我为此问题编写的完整源代码。 #include #include void partition(int part) { int *parts, *ptr, i, idx = 0, tot […]

C中未初始化数组中char的默认值是多少?

鉴于以下声明: char inputBuffer[12]; 数组中任何一个char的默认值是多少? 我很想知道这一点,因为如果我想在arrays中清除一个位置,我需要知道给它的价值。

使用指针跨越INTEGER数组中的所有元素

有没有办法使用指针跨越整数数组中的所有元素(类似于使用指针跨越字符串元素)。我知道整数数组不是NULL终止所以当我尝试使用指针溢出数组时溢出。所以我添加NULL作为数组的最后一个元素,它工作得很好。 int array[7]={1,12,41,45,58,68,NULL}; int *i; for(i=array;*i;i++) printf(“%d “,*i); 但是,如果数组中的一个元素为0,那将表现为NULL。有没有其他方法可以实现指针跨越整数数组中的所有元素?

合并两个数组而不使用数组进行排序

我试图合并到数组而没有排序(添加一个然后另一个)使用指针方法,但它只是打印第一个数组,然后打印垃圾值。 我想要做的只是在一个大数组中组合2个数组。 无需排序(至少目前为止)。 void getarray(int*,int); int merge(int*,int*,int,int,int*); main() { int a[10],b[10],c[20]; int i,j,n,m,size; clrscr(); printf(“Enter no. of elements in FIRST array: “); scanf(“%d”,&n); getarray(a,n); printf(“Enter no. of elements in SECOND array: “); scanf(“%d”,&m); getarray(b,m); merge(a,b,n,m,c); printf(“\nMerged Array: \n”); for(i=0;i<n+m;i++) { printf("\t%d\t",c[i]); } getch(); return 0; } void getarray(int *x, int y) { int i; for(i=0;i<y;i++) […]

C中的指针数组和只读存储器

我正在学习C编程语言,并且在理解指针,数组和只读存储器之间的微小差异时遇到了困难。 我正在使用以下示例: char *myCards = “JQK”; 根据我的理解,这行代码完成的是它在内存的只读段中创建一个空终止字符串,可通过char指针myCards 。 这意味着我能够编译以下内容,但由于字符串的不变性而会收到错误: *myCards = ‘A’; 我试图使用一组int来实现类似的function; 但是,如果可能的话,我完全不确定如何创建这个数组并将其放在内存的只读部分。 我知道我可以使用const关键字并创建一个数组,如下所示: const int myInts[] = {3, 6, 1, 2, 3, 8, 4, 1, 7, 2}; 但是,我可以在此数组初始化后直接执行以下操作: printf(“First element of array: %i\n”, myInts[0]); int *myIntsPtr = myInts; *myIntsPtr = 15; printf(“First element of array: %i\n”, myInts[0]); 我能够通过创建指向它的指针来改变数组的第一个元素,这意味着该数组永远不会被放入只读存储器中。 基本上我一直试图弄清楚我如何能够声明这个int数组,以便它在只读存储器中类似于”JQK” 。 任何见解都有帮助。 谢谢。

多维数组的别名

众所周知,2D数组是一个数组数组,标准要求它是一个连续分配的非空对象集 (6.2.5类型§20) – 这里的对象是一维数组。 众所周知,对于所有常见的实现,对于T arr2d[X][Y] ,以下等式是正确的,其中T是一个类型,X和Y的积分常数: (char *) &arr2d[i][j] == (char *) &arr2d[0][0] + i * Y * sizeof(T) + j * sizeof(T) 以上让我们认为可以允许对两个相同大小的二维数组和一维数组进行别名,或者甚至是另一个总大小相同的二维数组: 例如,以下程序编译并运行时没有警告,并给出预期输出: #include int main() { int i, j, k=0; int arr2d[3][4]; // array of 3 array of 4 ints int *arr1 = &arr2d[0][0]; // pointer to first element of an […]

将短裤数组转换为双精度数组

如何在C / C ++中将short类型的数组转换为double类型的数组? 我有代码从wav文件中读取音频数据,输出是short类型的数组。 所以现在我想将这些数据用于FFT(我不想使用库)。 任何技巧或想法?

C – 如何在数组中存储多个字符串

想知道如何在数组中存储不同的字符串。 例如,用户将输入’qwe’,然后程序将其存储在数组变量[0]中。 输入另一个字符串然后将其存储为变量[1],依此类推 int main(int argc, char *argv[]) { char variable[1000]; int i; printf(“enter a variable\n”); scanf(“%s”, variable); for (i = 0; ??? ;i++) { printf(“The variable entered was: %s\n”,variable[i]); } return 0; 我是C的新手,所以我不知道我在做什么。 但这就是我到目前为止所提出的,并且想知道我是否可以得到一些帮助来填补其余的谢谢!

为什么我会尝试将’char(* c)’传递给期望’const char(* c)’的函数?

我知道char ** vs const char **事情(就像在c faq中描述的那样)但是我看不到任何使用指向数组的指针的情况会导致数组内部的一些内容被实际修改。 我的代码: void fun(const char (*p)[6]) { printf(“%s”, p[0]); } int main(int argc, char *argv[]) { char a[6] = “hello”; char (*c)[6]; c = &a; fun(c); } 使用gcc编译时给出以下输出: test.c:17:9: warning: passing argument 1 of ‘fun’ from incompatible pointer type test.c:5:10: note: expected ‘const char (*)[6]’ but argument is of […]

如何动态分配2d字符数组?

我想动态分配一个二维数组来存储字符串。 我最初声明这个数组是这样的: char lines[numlines][maxlinelength]; 然而,当numlines非常庞大时,这会给我一个堆栈溢出。 如何动态分配它以防止堆栈溢出?