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日
  • 展开全部

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看