c语言“结构体”一直报错

按照网课输入下列代码,一直报错。
看起来应该是 结构体 部分有错
但是网课的代码就这么写的……
求问大家怎么修改!
#include
typedef struct Lnode *List;
struct Lnode{
int a[100];
int length;
};
int sequentialSearch(list tb1,int k);
int main(void)
{
int n,key;
int a[100];
scanf("%d",&n);
for(int i = 0 ; i < n ; i++)
scanf("%d",&a[i]);
scanf("%d",&key);
printf("%d "sequentialSearch(a,key));
}
int sequentialSearch(list tb1,int k){
int i;
tb1->a[0] = k;
for(i = tb1->length; &&tb1->a[i] != k;i--)
;
return i;
}


图片说明

0

16个回答

感觉题主很像我刚学C语言的时候,有问题不知该怎么办
下面是我的解决方案

 //头文件没有包
#include <stdio.h>
typedef struct Lnode List;
//你这里typedef 类型重定义为 List 后面用的是list
struct Lnode{
  int a[100];
  int length;

};
int sequentialSearch(List* tb1,int k);
int main(void)
{
  int n,key;
  scanf("%d",&n);
  //定义一个 List
  List tb1;

  //输入你要查找的值
  scanf("%d",&key);

  for(int i = 0 ; i < n ; i++)
  {
    //这块应该是循环输入
    scanf("%d",&(tb1.a[i]));
  }

  //1.这里""后面缺少,
  //2.函数参数类型为List类型
  printf("%d ",sequentialSearch(&tb1,key));
} 

int sequentialSearch(List* tb1,int k){
  int i;
  tb1->a[0] = k;
  for(i = tb1->length; i > 0 &&tb1->a[i] != k;i--)
    ;
  return i;
}

2

发现两个问题吧,
一,include 后面没有要包含的文件,空的一个include也是有问题的。
二,在结构体定义之前,就先typedef这个结构体,所以编译器不知道这里tepydef的是个啥,报的未声明的错误。修改如下:
//#include //或者删除
struct Lnode{
int a[100];
int length;
};
typedef struct Lnode *List;
//或者
typedef struct Lnode{
int a[100];
int length;
}*List;
这个两个修改应该都行,你试试。
PS:因为刚好要下载资源没分数,所以过来看看能不能挣点分数,还请采纳哈。

2
weixin_42163711
神农藏百草 去看看我的问题,我有币
大约一年之前 回复

注意你的大小写List list

1

main 是有类型的,是不是要有返回值呢?

0

二楼说的你写错了大小写字母,也是问题,看这个编译报错,应该就是这个大小写。

0

修改如下:
typedef struct Lnode{
int a[100];
int length;
}Lnode, *List;

i = tb1->length-1;

0

1.结构体定义要在使用前2.注意大小写的问题。定义的是List,声明时应使用List list

0

你一开始就用typedef声明结构,一开始不能用typedef声明结构

0

声明时使用List list

0

1.结构体定义要在使用前2.注意大小写的问题。定义的是List,声明时应使用List list 3.。。。。

0
共16条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言-结构体-创建结构体 程序运行出错问题以及结构体创建和使用问题整理
运行结构体程序时,在创建新的结构体时,程序运行时总是出错,原因: n从而对C语言指针和结构体有了新的认识nnPQueue CreateQueue(void)n{n PQueue Q;n Q = (PQueue)malloc(sizeof(Queue));//2n Q-&amp;amp;gt;front = Q-&amp;amp;gt;rear = 0;n return Q; n}nmain()n{n ...
c语言结构体成员作为函数参数
#includen#includenstruct Worker{n n char name[10];n char num[8];n};nvoid Sort(struct Worker wk[]){ //排序函数n n struct Worker temp;n for(int i=0;i<5;i++){n int k = i;n for(int j=i+1;j<5;j++){n if(
C语言结构体指针使用时出现的错误(没有给结构体分配内存)
最近学习数据结构,用C语言的结构体编写顺序表时出现了问题:n这是源代码:n#include &amp;lt;stdio.h&amp;gt;n#include &amp;lt;stdlib.h&amp;gt;n#include &amp;lt;malloc.h&amp;gt;n#define bool charn#define true 1n#define false 0n#define MAXSIZE 6nstruct SequenceList...
结构体中经常碰到的一个错误 undeclared identifier
#include<stdio.h>n#include<stdlib.h>struct student{n //定义一个学生结构体n char name[30];n int age; n}stu = {"zhangsan", 30};int main(){n struct student *pStudent;n struct student *ps;n ps = (
结构体作为参数传入函数错误
结构体作为参数传递的错误!n如下代码:定义了一个结构体变量,将该结构体变量作为参数传递给函数func2,此时传递给函数func2的是结构体变量my_sis的拷贝,函数func2中对所传入的结构体的修改不影响main函数中定义的结构体,所修改的只是传入的拷贝的副本。n 1 #include n 2 n 3 struct scoren 4 {n 5 int math;
C语言结构体别名定义问题
typedef struct AAA{ n ... n}*PS;nn这就为结构体指针AAA *定义了一个别名PS。以后写 PS pt; 就等价于写 struct AAA *pt; 了。对于上例中,写 BiTree root; 就等价于写 struct Node *root;
C中struct(结构体)初始化的问题
在leetcode上做一道用struct作为链表节点的题目时,遇到了一次runtimenerror。后来排查原因,发现是在一次写了如下的语句:nnnew_digit->next=(struct ListNode *)malloc(sizeof(structnListNode));nnew_digit=new_digit->next;nn之后,没有对这个指针的成员进行初始化,当加入下面的初始化语句:
C语言之结构体嵌套一级指针和二级指针
指针是C语言的精华,也是c中最难的部分;为了锻炼和提高自己对指针的理解,特在结构体中嵌套一级指针和二级指针来加深对。#include<stdio.h>n#include <string.h>n#include<stdlib.h>n#define false 0n#define true 1//结构体类型,每个导师有三个学生ntypedef struct Tean {n char *tNa
c结构体、c++结构体和c++类的区别以及错误纠正
 C和C++结构体的区别nnC语言中的结构体不能为空。n C语言中的结构体只是一个复杂的数据类型,只能定义成员变量,不能定义成员函数,但是可以定义函数指针;C++可以定义成员函数和成员变量。n C++的结构体和类体现了数据结构和算法的结合。n C语言中定义结构体变量时,struct不可以省略:C++中定义结构体变量时,struct可以省略。nnstruct Testn{n int num;n...
编译时 报错处理(一)结构体问题
报错原因:OC语法规定:不允许直接修改某个对象的结构体属性的成员n_btn 是个对象nframe是个结构体。n对象和结构体是不一样的,结构体是C语言中的,里面可以定义许多属性,但是不能定义方法,而对象是即可以定义属性又可以定义方法的,是典型的面向对象语法。n如何改变对象中结构体属性的成员:n解决方法一:n    // 既然不能直接修改对象中的结构体属性成员n    // 先取出结构体
c语言中,结构体做参数调用例子结构体形参例子
c语言中,结构体做参数调用例子结构体形参例子 typedef struct AnyscanFtStrn { n int StrID;n int StrFaceStart;n int StrFaceEnd;n void (*StrRender)(int x, int y);n }ANYSCAN_FT_STRING, *ANY
做个笔记——C语言结构体成员赋值的一个小问题
#include<stdio.h>n#include<string.h>//定义一个结构体,名为Studentnstruct Student n{n int sid;n int age;n char name[200];n}nint main(void)n{n struct Student st = {2017, 21, "Zhangsan"};n printf("si
C语言外部调用结构体,变量和数组
程序设计中遇到的问题:结构体与外部调用变量和数组。【结构体定义与声明】将结构体写在子文件time.c里,并且在time.h声明外部调用,结果如图,只能在time.c文件中使用,不能实现结构体外部调用。  将结构体的声明和调用都用在time.c文件中,会出现以下情况 *而将结构体在time.h文件中定义,并且声明外部调用,会出现以下情况 *然后,在time.c文件中加入一句话(struct  _fi...
C语言使用宏初始化结构体的问题
Linux内核源码中广泛的使用宏来进行结构体对象定义和初始化,但是进行对象初始化的时候需要注意宏参数和结构体成员名冲突的问题,下面进行简单测试说明,编写一个程序创建一个结构体,然后使用宏进行结构体初始化: 1 #include "stdio.h"n 2 n 3 struct guyn 4 {n 5 int id;n 6 char *name;n 7
C语言数据结构——链表解决在结构体中的数据存储问题
在C语言中常常遇到动态数据存储和处理的情况,通常我们可以通过数组和malloc等函数进行开辟内存进行处理。虽然这种方式可以处理动态数据,但是有一个很明显的缺点就是存在内存泄漏问题。在开辟的内存空间一般比实际存储的空间要大,有时候还会大很多,特别是以2的n次方进行开辟内存时都会造成内存的浪费。为了避免这种缺陷,我们在处理动态数据时也常用链表作为常用的数据结构对数据进行存储。背景:结构体在C语言中也很实
C语言之强大的结构体
一,struct 自定义类型介绍nn一门语言通常先定义基本数据类型,还有很多自定义类型,不可能由语言一一实现。于是乎,给出一个struct关键字,开放自定义类型权限,于是便有了所有类型。此之谓“一生二,二生三,三生万物”。nnnn二,结构体类型定义nnnn1,无名结构体类型nn不带来多余的类型名,只可在定义类型时定义变量。nnnn#include&amp;lt;stdio.h&amp;gt;n#include&amp;l...
Keil结构体初始化报错
n n n Keil中,对结构体进行全局初始化设置时,报错:nerror 29: .DasFreq = 0,n完整代码为:ntDasConfig gDasConfig =n{   n.DasWorkMode  n = 0,  n.DasTrigMethod  n = 0,n.DasFreq  n   n = 0,n.DasCount  n   n = 0, n};...
C语言结构体指针的使用方法
1.首先定义一个结构体,给它取别名:nntypedef struct node{nnstruct node * next;//指向下一节点nnint data;//数据域nn}pnode,*linklist;;//别名与指针名nn2.定义结构体指针与指针变量,给出几种不同的定义方式nnstruct node *a,b;nnpnode *c,d;nnlinklist  p;nn他们别名的关系如下:n...
C语言结构体与共用体
C语言结构体与共用体,C语言结构体与共用体的使用方法介绍
结构体声明当中 __attribute__ ((__packed__))关键字
稍微了解过C/C++的人,都会了解它们在建立一个结构体的时候,会进行字节对齐操作,所以往往比世界变量占用的字节数要多出一些,而如何减少内存占用,计算内存使用量,也是很多面试题里经常出现的题目。(字节对齐的详细内容请自行寻找资料,不要依靠本篇文章中的现象跟结果来理解字节对齐)rn但是稍微当我们真的不想要字节对齐的时候,有没有办法取消字节对齐?答案是可以,就是在结构体声明当中,加上__attribut
c语言结构体中动态数组的使用
结构体中动态数组的使用。
浅析C语言中的结构体
结构体:是一系列有相同类型或不同类型构的数据构成的数据集合。结构体的学习可以从以下几个方面开始:一.结构体类型的声明。struct tag{member-list;} vaeriable-list;注:tag 要做到见名知义,可以省略但是不建议省略      member-list 不能为空     veriable-list 建议省略(在需要的时候在声明)例如建造一个学生的结构体struct s...
C语言小结--结构体
1 什么是结构体rnrn结构体是一种聚合数据类型,它是一种数据元素的聚合。比如我们描述一个学生时,要求有他的姓名、学校、分数等等信息,在之前的处理中,我们通常会使用单独的数据类型来描述。比如,定义一个字符串数组来描述姓名char name[20] = &amp;amp;quot;xiaoming&amp;amp;quot;,定义一个浮点数来描述成绩float f = 96.5等等。但是这种做法有个缺点。所有的这些数据都是为了描述一个学生来定义的,但是它...
C语言直接返回结构体汇编后结果
(以下为使用vc以及debug编译下的结果)一般来说,返回小于等于4字节的基本类型,例如short,int,都是直接使用eax寄存器返回,而指针,也是使用eax寄存器返回。 n如果是8字节的基本类型,例如c++的long long 类型,很可能是使用两个寄存器,如eax和edx返回结果。 n实际上,如果结构体或者说类只占8字节或者更小的话,也是直接使用寄存器返回的。 n但是如果结构体占用空间比较大,
C语言结构体的简单使用实例
结构体的简单实例
C语言结构体定义
C语言结构体定义在我看来类似数据库的表nn如:nn#include &amp;lt;stdio.h&amp;gt;nn#include &amp;lt;string.h&amp;gt;nn nnstruct st1nn{nn  int id;nn  char name[30];nn  char sex;nn  int score;nn};nn nn nnint main()nn{nn    struct st1 s1;nn   ...
c语言结构体与文件
详细的讲解了c语言的机构体,文件的相关内容,言简意赅。是PPT形式的。
C语言之复杂结构体的访问
任意一个可以在结构外部声明的变量都可以作为结构的成员. 包括数组, 指针, 其他结构等. 对于结构成员的访问可以使用 点操作符(.) 和 箭头操作符(-&amp;gt;) 完成. 本文举例介绍复杂结构体成员的访问. 结构体声明如下:nnnn// 创建新的结构类型Tagntypedef structn{n int num;n short date[3];n} Tag;n// 创建新的结构类型Ms...
C语言字符串与结构体
C语言字符串与结构体
C语言学习笔记之结构体与共用体
结构体结构体:将不同类型的数据组合成一个有机的整体,以便引用;结构体中的元素也可以为结构体类型的for exmple :num     name        sex        age        score        addr10010    LiFei        M            18        87.5            Beijing声明一个结构体变量的形式 ...
C语言中,为什么结构体后面经常定义一个空数组
最近在写C代码,经常看到Linux 的头文件中有的结构体后面会定义一个空数组,不知道其为何作用?经过高人指点终于明白其要点!nn nnnstruct inotify_event {n __s32 wd;n __u32 mask;n __u32 cookie;n __u32 len;n char name[0];n};nn如上,结构体最后一个元素name为空数组。nn nn这是个...
C语言中结构体大小的计算(内存对齐详解)
首先来看一个例子;rnrnrnrnstruct Srn{rn char a;rn int b;rn char c;rn};rnrn我们先来计算一下这个结构体的大小,如果不存在内存对齐这个问题,按理说这个结构体应该占(1+4+1)6个字节;然而事实上它占了12个字节,为什么?我们需要解决下面几个问题。rnrnrnrn1.为什么存在内存对齐rnrnrn平台原因(移植问题):一些资料上是这样说的,“不是所有的硬件平台都能...
C语言结构体内存分布
1、字节对齐是为了提高效率,因为因为硬件平台的不同,数据总线可能从特定地址读取数据。n2、原则n                1、按数据类型自身地址对齐n                 2、整个结构体所占内存是成员变量中占  内存最大的变量的  整数倍n3、举例子nnnnnnnnn注意,变量的顺序不同,可能所占的空间也不一样。nnnnnnnnnn为
数据结构-C语言结构体的使用
结构体解释:在使用C语言的时候,往往基本数据类型不能满足我们的需要,所以结构体这个概念也应运而生。结构体能够组合几种不同的基本数据类或其它数据类型形成一个新的数据类型。类似于面对对象中的类。    声明        关键字:struct        形式:struct node {n int one;n char two;n}; //;作为结构体的一部分 不能省去    定义...
中阶C语言 结构体(typedef用法、多维结构体、指针、内嵌函数)
111
深入理解C语言结构体成员变量内存分配
欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:&quot;算法与编程之美&quot;,欢迎关注,及时了解更多此系列博客。1 问题描述在学习C语言的时候,我们都会频繁的接触到结构体,使用结构体定义新的数据类型,从而更加方便的存储数据。但是在使用结构体的时候,有些问题会经常会困扰我们,如下所示:第一种结构体定义:struct school{    char address[100];    char nam...
简单的C语言结构体实现面向对象的方法
一种简单方法,C语言实现面向对象类的方法。
c语言基础语法六——结构体(完结)
1;关于c语言结构体的引入; n在前面已经介绍了整形(int,long,….),浮点型(flaot,double),字符型(char),还介绍了数组(存储一组具有相同类型的数据),字符串。但是在实际问题中只有这些数据类型是不够的,有时候我们需要其中的几种一起来修饰某个变量,例如一个学生的信息就需要学号(字符串),姓名(字符串),年龄(整形)等等,这些数据类型都不同但是他们又是表示一个整体,要存在联系
C语言结构体方法的定义
一、简单介绍一般来说我们如果要在函数中去创建一个结构体的话,返回值一般都是返回一个指针,因为如果我们返回的是一个结构体的话,会消耗内存,因为在函数里面的内部创建的结构体,然后外面声明一个变量赋值给它,其实是做了一个拷贝操作,这样的话如果结构体有很多属性,就会消耗很多的内存,所以我们一般是把指向结构体的指针传递出去。下面都是在栈区开辟的空间,所创建的变量。所以是会存在问题的,因为是在子函数栈里面创建...
C语言结构体初始化的四种方法
定义nnnnstruct InitMembern{n int first;n double second;n char* third;n float four;n};nnnn方法一:定义时赋值nnnnstruct InitMember test = {-10,3.141590,&quot;method one&quot;,0.25};nn需要注意对应的顺序,不能错位。nnnn方法二:定义后逐个...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链价格一直跌 怎么学习互联网大数据