C-迭代numberOfProducts变量不起作用

问题描述

我是C的新手,正在创建一个在线商店,该商店管理库存中的一堆产品。我在打印所有产品时遇到了麻烦。当用户输入“ 1”时,该代码应遍历productCollection中的所有元素并打印出每个Product对象,则不会打印任何内容

我认为这是因为即使在addProduct()中进行迭代,numberOfProducts始终为0。尽管在哪里放置了迭代器,当我打印numberOfProducts时,它始终打印0。我想知道为什么吗?

main.c

Window

解决方法

在C语言中,函数参数按值传递。

int addProduct(ProductCollectionType productCollection

在此功能中,productCollection是呼叫者结构的副本

productCollection.numberOfProducts++;

因此该行修改的是本地变量,而不是调用方的变量。

要解决此问题,请传入一个插入的指针。

int addProduct(ProductCollectionType *productCollection,int i,char* n,int u,float p)
{
    ...
    productCollection->numberOfProducts++;
}

并致电:

addProduct(&p,1001,"Grape juice",20,12.5);