c - 当我将下一张卡片分配给它时,为什么指针最后没有在主函数中改变?
问题描述
void insertEndC(card* last, int val) {
card* newCard;
newCard = (card*)malloc(sizeof(card));
newCard->val = val;
if (last != NULL) {
last->nextCard = newCard;
newCard->prevCard = last;
last = last->nextCard;
}
else {
last = newCard;
last->prevCard = NULL;
}
last->nextCard = NULL;
}
指针是否仅在此过程的范围内更改?
解决方案
“指针是否仅在此过程的范围内更改?”
正确,对指向的地址的任何更新last
都不会在insertEndC()
. 您需要传入指针的地址才能更改last
指向的位置:
void insertEndC(card** last,int val) {
当然,将其余功能代码更改为 de-reference last
。
推荐阅读
- arrays - 有没有办法在不复制的情况下将数据“转换”到 [UInt8] (一个字节数组),或者是不安全的方法吗?
- python - 从类内部加载 MongoEngine 文档
- html - DOCTYPE 和背景图像
- reactjs - 导航回到主页时如何解决布尔错误?
- sapui5 - SmartTable 控件自 1.74 以来存在内部加载资源错误
- sql - 在 jenkins 上使用 groovy 脚本连接 SQL 数据库
- matlab - Simulink:FOR 迭代器和选择器块
- sql - ORA-01007: 变量不在选择列表中 ORA-06512: 在第 32 行
- google-cloud-platform - 有没有办法在 Dataflow 中拆分/自动缩放 gzip 源文件?
- encryption - 这个登录到我的 rest-api 服务器的过程是否有点安全?