如何使用list()在C中创建列表?(正在尝试将元素保存到列表或从列表中提取元素)
如何使用list()在C中创建列表?不是链表,只是元素的常规列表。我来自python,在那里我可以使用list=[]。但是当我在谷歌上搜索“C语言列表”时,唯一出现的是链表。我假设有一个函数list()创建了一个列表。我不知道如何提取第一个和第二个值:如何使用list()在C中创建列表?(正在尝试将元素保存到列表或从列表中提取元素),c,list,C,List,如何使用list()在C中创建列表?不是链表,只是元素的常规列表。我来自python,在那里我可以使用list=[]。但是当我在谷歌上搜索“C语言列表”时,唯一出现的是链表。我假设有一个函数list()创建了一个列表。我不知道如何提取第一个和第二个值: int L = list(1,2,3,4,5); int a = L[0]; int b = L[1]; 我需要在C中创建一个列表来存储两个值,一个分子(n)和一个分母(d)。我正在创建一个分数计算器,我希望n和d是我存
int L = list(1,2,3,4,5);
int a = L[0];
int b = L[1];
我需要在C中创建一个列表来存储两个值,一个分子(n)和一个分母(d)。我正在创建一个分数计算器,我希望n和d是我存储在分数(列表)中的两个值。我不想编写一个f1=(n1,d1)到fk=(nk,dk)的程序。C中没有列表。C标准库中没有列表,所以我不确定您在哪里找到它。在C语言中,通常使用数组
int L[] = {1,2,3,4,5};
int a = L[0];
int b = L[1];
C中的等价物是元素数组:
int x[10];
是一个int
s的数组,其大小为10
在C中初始化数组有几种方法,例如:
int x[10] = {0,1,2,3,4,5,6,7,8,9};
int x[] = {0,1,2,3,4,5,6,7,8,9};
也可以指定单个元素:
int x[10];
x[0] = 0;
x[1] = 1;
.
.
x[9] = 9;
您应该阅读更多关于数组以及它们如何在c中工作的信息。我在那里看到了两个问题:
#include <stdio.h>
#include <stdlib.h>
// Define a structure type, no builtin tuples
typedef struct {
int n;
int d;
} Fraction;
int main(int argc, char **argv) {
int i;
int N = 5;
Fraction f0 = {2, 3}; // Directly create & initialize data
Fraction *fractions; // variable length ponter to array of Fractions
// Using dynamic allocation of arrays
fractions = (Fraction *) malloc(N*sizeof(Fraction));
fractions[0] = f0;
fractions[1] = (Fraction) {5, 7}; // This needs to be explicitly casted to Fraction type
fractions[2] = (Fraction) {11, 13};
fractions[3] = (Fraction) {17, 19};
fractions[4] = (Fraction) {23, 29};
printf ("Fraction0 -> numerator: %d, denominator: %d\n", f0.n, f0.d);
for (i=1; i < N; i++) {
printf ("Fractions[%d] -> numerator: %d, denominator: %d\n", i, fractions[i].n, fractions[i].d);
}
}
#包括
#包括
//定义结构类型,无内置元组
类型定义结构{
int n;
int d;
}分数;
int main(int argc,字符**argv){
int i;
int N=5;
分数f0={2,3};//直接创建和初始化数据
分数*分数;//分数数组的可变长度ponter
//使用数组的动态分配
分数=(分数*)malloc(N*sizeof(分数));
分数[0]=f0;
分数[1]=(分数){5,7};//这需要显式地转换为分数类型
分数[2]=(分数){11,13};
分数[3]=(分数){17,19};
分数[4]=(分数){23,29};
printf(“分数0->分子:%d,分母:%d\n”,f0.n,f0.d);
对于(i=1;i分子:%d,分母:%d\n”,i,分数[i].n,分数[i].d);
}
}
应打印:
分数0->分子:2,分母:3
分数[1]>分子:5,分母:7
分数[2]>分子:11,分母:13
分数[3]>分子:17,分母:19
分数[4]>分子:23,分母:29
谢谢如果我把()放在单词后面,那么升华文本的颜色会对单词进行编码。我以为它能像识别int或struct一样识别它,因为它显示为相同的颜色。@DanO'Connell没问题。如果其中一个答案解决了你的问题,请务必接受。C没有列表。如果您需要对它们进行编码(使用包含指针的heap-allocated
struct
),这与我试图实现的目标非常接近。我试图扫描分子和分母。谢谢你的帮助。还有一个问题:如果我试图使用scanf给n和d一个值,我会怎么做?我试过使用&(f->Fraction.n)、&Fraction.n、Fraction.n和简单的&n,但这些都不起作用。不客气。Try:scanf(“%d%d”,&f0.n,&f0.d)代码>。如果您使用“f”作为数组/指针,那么它将类似于f=&f0;scanf(“%d%d”,&(f->n),&(f->d))代码>请记住首先将“f”分配给已分配的结构,否则可能会出现segfault。