#include<stdio.h>
#include<stdlib.h>
#define size 20
typedef int keytype;
typedef int othertype;
typedef struct{
keytype key2;
othertype odata;
}Recordtype;
typedef struct {
Recordtype r[size+1];
int length;
}Recordlist;
int Seqsearch(Recordlist l,keytype k)
{
int i=l.length;
while(i>=1&&l.r[i].key2!=k)i--;
if(i>=1)return i;
else return 0;
}
int main()
{ int k,k2,q;
Recordlist l;
printf("print k2=\n");
k=k2;
scanf("%d",&k);
printf("print odata,0 is end\n");
for(int i=0;i<=size-1;i++)
{
getchar();//空格也是一个字符//
scanf("%d",&q);
if(q!=0)
l.r[i].odata=q;
}
Seqsearch(l,k);
return 0;
}
第一个getchar() 也没有变量接收,输入了个寂寞,改成 scanf("%d", &k);
主函数循环里面 getchar() 输入, 空格 也是一个字符,你这个要用 整型输入,用 scanf("%d", &q);
C语言区别于其他高级语言的一个特点是其拥有指针的概念,指针变量将内存地址作为数据值。下面代码中所示,定义了 num 整数变量,并给其赋值为 10。计算机执行该语句时,会在内存开辟一个大小为 4 字节的空间用于存放数值 10,使用 num 可以访问该内存空间中的数据。而指针变量 p 存放了 num 变量在内存中存放的第一个字节的地址。
int num = 10;
int *p = #
示意图如下所示,假如变量 num 存放数据的内存地址为 1000 ~ 1003,指针 p 的内存地址为1004~1011(8个字节)。变量 num 内存中存放了数据 10,而指针 p 中记录了 num 内存的第一个字节的地址。
指针存放内存地址,所以指针变量的大小和 CPU 寻址有关,在 64bit 机器中指针变量占 8 字节,32位机器中指针变量占 4 字节。