如何使用list()在C中创建一个列表? (试图保存和从列表中提取元素)
如何使用list()在C中创建列表?不是一个链表,只是一个常规的元素列表。我来自python,我可以使用list = []。但是,当我在Google“C列表”中唯一出现的是链接列表。看来有一个函数列表(),我假设创建一个列表。我无法弄清楚如何提取第一和第二值:如何使用list()在C中创建一个列表? (试图保存和从列表中提取元素)
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)的程序。
我看到2个问题有:
- 如何使用数据结构来存储非原子型可变
- 如何创建这样的结构的一个(同质)阵列。
Python列表没有直接的等价物,因为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);
}
}
这应该打印:
Fraction0 - >分子:2,分母:3个
分数[ 1] - >分子:5,分母:7个
级分[2] - >分子:11,分母:13
级分[3] - >分子:17,分母:19个
级分[4] - >分子:23,分母:29
这更接近我想要完成的事情。我试图扫描分子和分母。谢谢你的帮助。 –
还有一个问题:如果我试图使用scanf给n和d一个值,我该怎么做?我曾尝试使用&(f-> Fraction.n),&Fraction.n,Fraction.n,并简单地&n但没有任何工作。 –
不客气。尝试:'scanf(“%d%d”,&f0.n,&f0.d);'。如果你使用“f”作为数组/指针,那么它就像'f = &f0; scanf(“%d%d “,&(f-> n),&(f-> d));'只要记住首先将”f“赋值给一个已分配的结构,否则就会发生段错误。 – clocker
C中没有这样一个列表。list
不在C标准库中,所以我不确定你在哪里找到了。在C中,你通常会使用一个数组。
int L[] = {1,2,3,4,5};
int a = L[0];
int b = L[1];
谢谢。事实证明,如果我把()放在它后面,Sublime Text颜色就会编码一个单词。我认为它会识别它,因为它会显示为相同的颜色,所以它会显示int或结构体。 –
@ DanO'Connell没问题。如果其中一个答案解决了您的问题,请确保接受它。 –
在C中的等效将是元件的阵列:
int x[10];
是int
秒的阵列及其大小= 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中工作的内容。
C未列表。如果你想[链表](https://en.wikipedia.org/wiki/Linked_list)你需要对它们进行编码(使用包含指针的堆'struct') –