迷途的启木菌 2020-06-09 10:25 采纳率: 50%
浏览 236
已采纳

使用了指针,但是函数的形参仍然无法传递给实参

这是个顺序表,自定义的函数MakeEmpty(SqList *S)对顺序表进行初始化,但是初始化后的S的形参的值length=0,无法传递给实参。请问是为什么啊,然后怎么在这个函数内部能让形参传递给实参呢?

#include<stdio.h>
#include<stdlib.h>

#define MAXSIZE 27/*存储空间初始分配量*/
typedef int ElemType;/*ElemType类型根据实际情况而定,这里假设为int*/

typedef struct
{/*线性表的顺序存储结构*/
    ElemType data[MAXSIZE];/*数组存储数据元素*/
    int length;/*线性表的当前长度*/
}SqList;

void MakeEmpty(SqList *S)
{/*初始化顺序表*/
    S = (SqList *)malloc(sizeof(SqList));
    S->length = 1;
}

int main(void)
{
    SqList Sa;MakeEmpty(&Sa);
    SqList Sb;MakeEmpty(&Sb);
    SqList Sc;MakeEmpty(&Sc);

    return 0;
}

测试效果
运行时,形参的值是改变了的
图片说明

但是这个形参s的length值却没有传递个实参
图片说明

  • 写回答

1条回答 默认 最新

  • qiu_shaofeng 2020-06-09 11:06
    关注

    问题出在 S = (SqList *)malloc(sizeof(SqList));这条语句要删除。
    实参&Sa在子函数中被malloc修改为S,返回后S不存在,当然也修改不了length。
    值传递,地址传递,实际上都是值传递。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器