问题描述
我是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);