白沐沐vccc 2022-09-14 16:59 采纳率: 96.2%
浏览 30
已结题

c语言结构体指针问题


#include<stdio.h>
#include<stdlib.h>
#define OK 2
typedef int Status; 
typedef int ElemType;
typedef struct{
    ElemType *elem;
    int length;
}SqList; 
Status ListInsert(SqList *L,int e){
    
    ElemType *q=(L->elem);
    ElemType *p=L->elem+L->length-1;
    for(p;p>=q;p--){
        if(*p>e){
            *(p+1)=*p;
            *p=e;
        }
        else
            break;
    }
    L->length++;
    return OK;
}
int main(){
    SqList L;
    L.elem=(ElemType *)malloc(100*sizeof(ElemType));
    int a[]={1,3,5,7};
    L.elem=a;
    L.length=4;
    ListInsert(&L,4);
    for(int i=0;i<L.length;i++) printf("%d ",*(L.elem+i));
    return 0;
} 

请问为什么结果打印不出来

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-09-14 17:30
    关注

    供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #define OK 2
    typedef int Status;
    typedef int ElemType;
    typedef struct {
        ElemType* elem;
        int length;
    }SqList;
    Status ListInsert(SqList* L, int e) {
    
        ElemType* q = (L->elem);
        ElemType* p = L->elem + L->length - 1;
        for (p; p >= q; p--) {
            if (*p > e) {
                *(p + 1) = *p;
                *p = e;
            }
            else
                break;
        }
        L->length++;
        return OK;
    }
    int main() {
        int i;
        SqList L;
        L.elem = (ElemType*)malloc(100 * sizeof(ElemType));
        L.length = 0;
        int a[] = { 1,3,5,7 };
        L.length = sizeof(a) / sizeof(a[0]);
        //L.elem = a;
        for (i = 0; i < L.length; i++)
            L.elem[i] = a[i];
        ListInsert(&L, 4);
        for (int i = 0; i < L.length; i++) printf("%d ", *(L.elem + i));
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月29日
  • 已采纳回答 9月21日
  • 创建了问题 9月14日