微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C-迭代numberOfProducts变量不起作用

如何解决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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。