rubbish_is_me 2022-11-01 00:21 采纳率: 100%
浏览 13
已结题

顺序表中子函数调用另外一个子函数,为什么不用加&

img


为什么这里调用另外一个子函数不需要加&,明明主函数里调用就需要加&啊😨

#include<stdio.h>

#include<malloc.h>

#include<stdlib.h>

#include<string.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10 
typedef  struct{
    int *elem;
    int length; 
    int listsize;
}SqList;
 
int InitList_Sq(SqList *L)
{
    L->elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int)); 
    if(!L->elem)
    {
        return -1;
    }
    L->length = 0; 
    L->listsize = LIST_INIT_SIZE; 
    return 1; 
}//初始化 

int ListInsert_Sq(SqList *L, int i, int e)
{
    if(i<1 || i>L->length+1)
    {
        return -1;
    }
    if(L->length >= L->listsize) 
    {
        int *newbase = (int *)realloc(L->elem, (L->listsize+LISTINCREMENT) * sizeof(int));
        if(!newbase)
        {
            return -1;     
        } 
        L->elem = newbase; 
        L->listsize += LISTINCREMENT; 
    }
    int *q = &(L->elem[i-1]); 
    for (int *p=&(L->elem[L->length-1]); p>=q; --p)
    {
        *(p+1) = *p;
    } 
    *q = e; 
    ++L->length; 
    return 1;
}//插入

void show(SqList *L) 
{
    int i;
    for(i = 0;i<L->length;i++)
    {
        if(i==L->length-1) printf("%d\n", L->elem[i]);
        else printf("%d ", L->elem[i]);
    }
}//输出 

int LocateElem(SqList *L, int i)
{
    int j, t = 0;
    if (!L->elem) 
    exit(0);
    for (j = 0; j < L->length; j++)
    {
        if (L->elem[j] == i)
       {
            t = 1;
            break;
       }
    }
    if (!t) 
    return 0;
    else return j + 1;
}//查询i在什么位置

int ListEmpty(SqList *L)
{
    if(L->length==0)
    {
        return 0; 
    }
    return 1;
}

void PriorElem(SqList *L)
{
    int i,e,j;
    printf("输入要查找前驱的元素:");
    scanf("%d",&j);
    i=LocateElem(L,j);
    if(i<=1 || i>L->length)
    {
        printf("输入错误\n");
    }
    e=L->elem[i-2];
    printf("%d的前驱元素是:%d\n",i,e);
}//求前驱

int main()
{
    SqList L,l; 
    InitList_Sq(&L);
    int e; 
    for(int i=1; i<=10; i++)
    {
        ListInsert_Sq(&L, i, i);
    }
    show(&L);
    printf("查询5在什么位置:");
    printf("%d\n",LocateElem(&L,5));
    PriorElem(&L);
}
  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-11-01 00:50
    关注

    因为函数里SqList *L已经是指针了,地址传递即达目的了。

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

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 修改了问题 11月1日
  • 修改了问题 11月1日
  • 展开全部

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图