c语言指针扩大数组,C中的指针实现数组

HII

我一直在写一个程序…我们有一个结构,它有一个等级字段和名称字段。指向这个结构的指针存储在一个固定大小的数组中。我已经实现了如下,我有一些问题…

我写的代码是:

#include

#include

#include

typedef struct

{

int rank;

char *name;

}node;

int insert(node **a , char name[] , int *rank)

{

if(*rank >= 5)

{

printf("\n Overflow ");

return 0;

}

(*rank)++;

node *new = (node *)malloc(sizeof(node));

new->name = name;

new->rank = *rank;

a[*rank] = new;

return 0;

}

int delete(node **a , int *rank)

{

int i = *rank;

if(*rank<0)

{

printf("\n No elements");

return 0;

}

printf("\n Deleting %d , %s ",((a[*rank]))->rank,((a[*rank]))->name);

printf("\n Reordering the elements ");

while(i<5)

{

a[i] = a[i+1];

}

return 0;

}

int display(node **a , int rank)

{

while(rank>0 && (a[rank])>0)

{

printf(" rank = %d name = %s \n",((a[rank])->rank),((a[rank])->name));

rank--;

}

return 0;

}

int main()

{

node *a[5] = {NULL};

char ch = 'y';

int choice,rank = -1;

char name[10];

while(ch!='n' || ch!= 'N')

{

printf("\n Enter 1 to insert , 2 to delete , 3 to display and 4 to exit \n");

scanf("%d",&choice);

switch(choice)

{

case 1:

printf("\n Enter name to insert");

gets(name);

insert(a,name,&rank);

break;

case 2:

printf("\n Enter rank to delete ");

scanf("%d",&rank);

delete(a,&rank);

break;

case 3:

display(a,rank);

break;

case 4:

exit(0);

default:

printf("\n Invalid choice...please enter again ");

break;

}

ch = getchar();

}

return 0;

}

第一件事是系统自动做出选择,除了第一次…(我在那里找不到故障…)我对这个指针的东西有点困惑……请看它是否正确……欢迎任何更正,请给我一些解释,为什么它是错误的,以及我们如何做它……

谢谢您

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值