首页 > 解决方案 > 如何处理用c语言填充结构

问题描述

我在理解如何将信息调用和存储到结构中时遇到问题。

typedef struct {
    char ticker[10];
    double price;
} StockPrice;

typedef struct {
    char ticker[10];
    double shares;
} Stock;


typedef struct {
    Stock myStocks[MAX_MY_STOCKS]; // MAX_MY_STOCKS is five.
    double balance;
} Portfolio;

我不知道确切的措辞,但我正在处理一个结构,其中包含另一种类型的结构,并且想知道在用 C 语言编写时如何填充和打印出结构。

标签: c

解决方案


由于 WedaPashi 没有介绍使用值进行初始化,我将简要解释一下。一旦你声明了一个结构

StockPrice sp;

然后现在该结构中的所有变量都有一段内存。现在所有这些变量都有“垃圾值”,这意味着它们可能是任何可能的值,我们无法可靠地知道是什么。正如他的回答中提到的,您可以使用“。”访问这些值。为了给它们赋值,例如

sp.price = 12.35;

你可以用同样的方式初始化数组,所以我们可以说

sp.ticker = {'t','i','c','k','e','r','V','A','L'};

或者在 char 数组的特殊情况下,我们可以简单地说

sp.ticker = "tickerVal";

或者,您可以一次初始化结构中的所有值,例如

StockPrice sp = {"tickerVal", 99.35};

此时 sp.price 等于 99.35,并且ticker 包含字符串“tickerVal”。重要的是要注意,一旦在结构中设置了至少一个变量的值,那么所有其他没有分配值的变量都会得到一个默认值。换句话说,一旦您设置了至少一个变量,就不会再有“垃圾值”了。

如果我们想将所有这些放在一起只是为了让您了解更复杂的初始化,我们可以这样说:

Portfolio p = { 
    /*first value is an array initialization of stocks*/
    {
        {"ticker0\0",0.0},     /*stock structs*/
        {"ticker1\0",1.0},     /*stock structs*/
        {"ticker2\0",2.0},     /*stock structs*/
        {"ticker3\0",3.0},     /*stock structs*/
        {"ticker4\0",4.0},     /*stock structs*/
        {"ticker5\0",5.0},     /*stock structs*/
        {"ticker6\0",6.0},     /*stock structs*/
        {"ticker7\0",7.0},     /*stock structs*/
        {"ticker8\0",8.0},     /*stock structs*/
        {"ticker9\0",9.0}      /*stock structs*/
    },/*end of array of Stock*/
    /*second value is double balance*/
    100.99
};

推荐阅读