seq为结构变量
SPL为结构指针
问&seq为多少
SPL=&seq,指针指向哪了?
下面是原始代码
#include<stdio.h>
#define MAXLEN 100
typedef int elementtype;
typedef struct
{
elementtype s[MAXLEN];
int len;
}SqList;
int insertsqlist(SqList *sql,int i,elementtype x)
{
int j;
if((i<1)||(i>sql->len+1))
{
printf("插入位置%d不合法\n",i);
return(0);
}
if(sql->len>=MAXLEN-1)
{
printf("表已满,无法插入");
return(0);
}
for(j=sql->len;j>=i;j--)
sql->s[j+1]=sql->s[j];
sql->s[j+1]=x;
(sql->len)++;
return(1);
}
void main()
{
SqList seq;
int p,q,r;
SqList z;
int i;
printf("请输入线性表的长度:");
scanf("%d",&r);
seq.len=r;
printf("请输入线性表的各元素值:\n");
for(i=1;i<=seq.len;i++)
{
scanf("%d",&seq.s[i]);
}
printf("请输入要插入的位置:");
scanf("%d",&p);
printf("请输入要插入的元素值:");
scanf("%d",&q);
z=seq;
insertsqlist(&seq,p,q);
printf("插入元素后的线性表:\n");
for(i=1;i<=seq.len;i++)
{
printf("%d ",seq.s[i]);
}
}
SPL是不是指向分配地址空间的首地址?
追答这里的seq就是一个!!结构体变量,包含的内容为elementtype的数组和长度,何来首地址?SPL就是seq的地址!这里的seq既不是数组又不是链表,就是一个结构体变量
追问主要是这个地方看不大懂insertsqlist(&seq,p,q);
int insertsqlist(SqList *sql,int i,elementtype x)
第一个参数没弄明白。
函数原型:int insertsqlist(SqList *sql,int i,elementtype x);第一个参数是SqList指针,而在main函数中seq是SqList变量,所以在调用时,传的参数是&seq,就是seq的地址