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
神农藏百草 去看看我的问题,我有币
大约一年之前 回复

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

0

注意你的大小写List list

1

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

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语言-结构体-创建结构体 程序运行出错问题以及结构体创建和使用问题整理
运行结构体程序时,在创建新的结构体时,程序运行时总是出错,原因: 从而对C语言指针和结构体有了新的认识 PQueue CreateQueue(void) { PQueue Q; Q = (PQueue)malloc(sizeof(Queue));//2 Q-&amp;amp;gt;front = Q-&amp;amp;gt;rear = 0; return Q; } main() { ...
C语言结构体指针使用时出现的错误(没有给结构体分配内存)
最近学习数据结构,用C语言的结构体编写顺序表时出现了问题: 这是源代码: #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;malloc.h&amp;gt; #define bool char #define true 1 #define false 0 #define MAXSIZE 6 struct SequenceList...
结构体中经常碰到的一个错误 undeclared identifier
#include<stdio.h> #include<stdlib.h>struct student{ //定义一个学生结构体 char name[30]; int age; }stu = {"zhangsan", 30};int main(){ struct student *pStudent; struct student *ps; ps = (
结构体作为参数传入函数错误
结构体作为参数传递的错误! 如下代码:定义了一个结构体变量,将该结构体变量作为参数传递给函数func2,此时传递给函数func2的是结构体变量my_sis的拷贝,函数func2中对所传入的结构体的修改不影响main函数中定义的结构体,所修改的只是传入的拷贝的副本。 1 #include 2 3 struct score 4 { 5 int math;
c结构体、c++结构体和c++类的区别以及错误纠正
原文地址:https://blog.csdn.net/mercy_ps/article/details/82918677 C和C++结构体的区别 C语言中的结构体不能为空。 C语言中的结构体只是一个复杂的数据类型,只能定义成员变量,不能定义成员函数,但是可以定义函数指针;C++可以定义成员函数和成员变量。 C++的结构体和类体现了数据结构和算法的结合。 C语言中定义结构体变量时,struct不...
C语言之结构体嵌套一级指针和二级指针
指针是C语言的精华,也是c中最难的部分;为了锻炼和提高自己对指针的理解,特在结构体中嵌套一级指针和二级指针来加深对。#include<stdio.h> #include <string.h> #include<stdlib.h> #define false 0 #define true 1//结构体类型,每个导师有三个学生 typedef struct Tea { char *tNa
编译时 报错处理(一)结构体问题
报错原因:OC语法规定:不允许直接修改某个对象的结构体属性的成员 _btn 是个对象 frame是个结构体。 对象和结构体是不一样的,结构体是C语言中的,里面可以定义许多属性,但是不能定义方法,而对象是即可以定义属性又可以定义方法的,是典型的面向对象语法。 如何改变对象中结构体属性的成员: 解决方法一:     // 既然不能直接修改对象中的结构体属性成员     // 先取出结构体
c语言中,结构体做参数调用例子结构体形参例子
c语言中,结构体做参数调用例子结构体形参例子 typedef struct AnyscanFtStr { int StrID; int StrFaceStart; int StrFaceEnd; void (*StrRender)(int x, int y); }ANYSCAN_FT_STRING, *ANY
结构体声明当中 __attribute__ ((__packed__))关键字
稍微了解过C/C++的人,都会了解它们在建立一个结构体的时候,会进行字节对齐操作,所以往往比世界变量占用的字节数要多出一些,而如何减少内存占用,计算内存使用量,也是很多面试题里经常出现的题目。(字节对齐的详细内容请自行寻找资料,不要依靠本篇文章中的现象跟结果来理解字节对齐) 但是稍微当我们真的不想要字节对齐的时候,有没有办法取消字节对齐?答案是可以,就是在结构体声明当中,加上__attribut
做个笔记——C语言结构体成员赋值的一个小问题
#include<stdio.h> #include<string.h>//定义一个结构体,名为Student struct Student { int sid; int age; char name[200]; } int main(void) { struct Student st = {2017, 21, "Zhangsan"}; printf("si
C语言结构体别名定义问题
typedef struct AAA{ ... }*PS; 这就为结构体指针AAA *定义了一个别名PS。以后写 PS pt; 就等价于写 struct AAA *pt; 了。对于上例中,写 BiTree root; 就等价于写 struct Node *root;
C语言使用宏初始化结构体的问题
Linux内核源码中广泛的使用宏来进行结构体对象定义和初始化,但是进行对象初始化的时候需要注意宏参数和结构体成员名冲突的问题,下面进行简单测试说明,编写一个程序创建一个结构体,然后使用宏进行结构体初始化: 1 #include "stdio.h" 2 3 struct guy 4 { 5 int id; 6 char *name; 7
C语言结构体指针的使用方法
1.首先定义一个结构体,给它取别名: typedef struct node{ struct node * next;//指向下一节点 int data;//数据域 }pnode,*linklist;;//别名与指针名 2.定义结构体指针与指针变量,给出几种不同的定义方式 struct node *a,b; pnode *c,d; linklist  p; 他们别名的关系如下: ...
C中struct(结构体)初始化的问题
在leetcode上做一道用struct作为链表节点的题目时,遇到了一次runtime error。后来排查原因,发现是在一次写了如下的语句: new_digit->next=(struct ListNode *)malloc(sizeof(struct ListNode)); new_digit=new_digit->next; 之后,没有对这个指针的成员进行初始化,当加入下面的初始化语句:
C语言数据结构——链表解决在结构体中的数据存储问题
在C语言中常常遇到动态数据存储和处理的情况,通常我们可以通过数组和malloc等函数进行开辟内存进行处理。虽然这种方式可以处理动态数据,但是有一个很明显的缺点就是存在内存泄漏问题。在开辟的内存空间一般比实际存储的空间要大,有时候还会大很多,特别是以2的n次方进行开辟内存时都会造成内存的浪费。为了避免这种缺陷,我们在处理动态数据时也常用链表作为常用的数据结构对数据进行存储。背景:结构体在C语言中也很实
C语言之强大的结构体
一,struct 自定义类型介绍 一门语言通常先定义基本数据类型,还有很多自定义类型,不可能由语言一一实现。于是乎,给出一个struct关键字,开放自定义类型权限,于是便有了所有类型。此之谓“一生二,二生三,三生万物”。 二,结构体类型定义 1,无名结构体类型 不带来多余的类型名,只可在定义类型时定义变量。 #include&amp;lt;stdio.h&amp;gt; #include&amp;l...
c语言结构体中动态数组的使用
结构体中动态数组的使用。
C语言结构体与共用体
C语言结构体与共用体,C语言结构体与共用体的使用方法介绍
C语言结构体的简单使用实例
结构体的简单实例
C语言小结--结构体
1 什么是结构体 结构体是一种聚合数据类型,它是一种数据元素的聚合。比如我们描述一个学生时,要求有他的姓名、学校、分数等等信息,在之前的处理中,我们通常会使用单独的数据类型来描述。比如,定义一个字符串数组来描述姓名char name[20] = &amp;amp;quot;xiaoming&amp;amp;quot;,定义一个浮点数来描述成绩float f = 96.5等等。但是这种做法有个缺点。所有的这些数据都是为了描述一个学生来定义的,但是它...
C语言结构体定义
C语言结构体定义在我看来类似数据库的表 如: #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;string.h&amp;gt;   struct st1 {   int id;   char name[30];   char sex;   int score; };     int main() {     struct st1 s1;    ...
C语言直接返回结构体汇编后结果
(以下为使用vc以及debug编译下的结果)一般来说,返回小于等于4字节的基本类型,例如short,int,都是直接使用eax寄存器返回,而指针,也是使用eax寄存器返回。 如果是8字节的基本类型,例如c++的long long 类型,很可能是使用两个寄存器,如eax和edx返回结果。 实际上,如果结构体或者说类只占8字节或者更小的话,也是直接使用寄存器返回的。 但是如果结构体占用空间比较大,
C语言中,为什么结构体后面经常定义一个空数组
最近在写C代码,经常看到Linux 的头文件中有的结构体后面会定义一个空数组,不知道其为何作用?经过高人指点终于明白其要点!   struct inotify_event { __s32 wd; __u32 mask; __u32 cookie; __u32 len; char name[0]; }; 如上,结构体最后一个元素name为空数组。   这是个...
浅析C语言中的结构体
结构体:是一系列有相同类型或不同类型构的数据构成的数据集合。结构体的学习可以从以下几个方面开始:一.结构体类型的声明。struct tag{member-list;} vaeriable-list;注:tag 要做到见名知义,可以省略但是不建议省略      member-list 不能为空     veriable-list 建议省略(在需要的时候在声明)例如建造一个学生的结构体struct s...
中阶C语言 结构体(typedef用法、多维结构体、指针、内嵌函数)
111
C语言之复杂结构体的访问
任意一个可以在结构外部声明的变量都可以作为结构的成员. 包括数组, 指针, 其他结构等. 对于结构成员的访问可以使用 点操作符(.) 和 箭头操作符(-&amp;gt;) 完成. 本文举例介绍复杂结构体成员的访问. 结构体声明如下: // 创建新的结构类型Tag typedef struct { int num; short date[3]; } Tag; // 创建新的结构类型Ms...
C语言字符串与结构体
C语言字符串与结构体
C语言中结构体大小的计算(内存对齐详解)
首先来看一个例子; struct S { char a; int b; char c; }; 我们先来计算一下这个结构体的大小,如果不存在内存对齐这个问题,按理说这个结构体应该占(1+4+1)6个字节;然而事实上它占了12个字节,为什么?我们需要解决下面几个问题。 1.为什么存在内存对齐 平台原因(移植问题):一些资料上是这样说的,“不是所有的硬件平台都能...
C语言_函数结构体的调用
C语言_函数结构体的调用 #include&lt;stdio.h&gt; //定义存储函数的结构体 struct map{ //定义无参数类型返回void的函数指针 void (*p)(); }; /* * 通过实验观察系统如何处理整数上溢,浮点数上溢和浮点数下溢 */ void one(); //编写一个程序,要求提示输入一个ASCIL码值,然后打印输入的字符 void two()...
c语言结构体与文件
详细的讲解了c语言的机构体,文件的相关内容,言简意赅。是PPT形式的。
C语言中的结构体与面向对象编程思想
没有万能的编程技术 没有只产生正确的结果的编程语言 不是每个项目的编程都是从零开始的 —-Object-Oriented Programming With ANSI-C 一、C语言结构体1、结构体是什么(1)用途结构体是一种可以包含一个或者多个不同数据类型的数据结构,是一种可以自己定义的数据类型。与数组不同,结构体的多个数据可以是不同的数据类型。结构体在纯C语言环境中编程常有两种用
C语言结构体初始化
C语言结构体初始化
c语言基础语法六——结构体(完结)
1;关于c语言结构体的引入; 在前面已经介绍了整形(int,long,….),浮点型(flaot,double),字符型(char),还介绍了数组(存储一组具有相同类型的数据),字符串。但是在实际问题中只有这些数据类型是不够的,有时候我们需要其中的几种一起来修饰某个变量,例如一个学生的信息就需要学号(字符串),姓名(字符串),年龄(整形)等等,这些数据类型都不同但是他们又是表示一个整体,要存在联系
C语言学习—结构体与共用体
·C语言引入了两种构造类型—结构体和共用体是为了解决一些关系密切但数据类型不同的数据。1.1结构体类型定义的一般形式:                                       2.1共用体类型定义的一般格式:struct 结构体名      /*struct是关键字*/                              union  共用体名         /*uni...
简单的C语言结构体实现面向对象的方法
一种简单方法,C语言实现面向对象类的方法。
C语言结构体方法的定义
一、简单介绍一般来说我们如果要在函数中去创建一个结构体的话,返回值一般都是返回一个指针,因为如果我们返回的是一个结构体的话,会消耗内存,因为在函数里面的内部创建的结构体,然后外面声明一个变量赋值给它,其实是做了一个拷贝操作,这样的话如果结构体有很多属性,就会消耗很多的内存,所以我们一般是把指向结构体的指针传递出去。下面都是在栈区开辟的空间,所创建的变量。所以是会存在问题的,因为是在子函数栈里面创建...
C语言-获取结构体地址
如何得到结构体的首地址 #include&lt;stdio.h&gt; typedef struct { int a; int b; }T; int main() { T t; void *p1; void *p2; p1 = &amp;t; p2 = &amp;t.a; printf("p1 = %p, p2 = %p\n",p1,p2); } &amp;t 和 &...
C语言基础六(结构体以及一些宏定义)
结构体字节对齐 结构体变量本身从4字节对齐的位置开始存放。 整个结构体所占空间还要是成员中‘占字节最大的基本数据类型’的整数倍,不够的在末尾补齐。 short类型从地址是2的倍数处开始存储,int类型从地址是4的倍数处开始存储,double类型从地址是8的倍数处开始存储,空出来的部分内存由编译器填充。 struct da { double a; char
C语言外部调用结构体,变量和数组
程序设计中遇到的问题:结构体与外部调用变量和数组。【结构体定义与声明】将结构体写在子文件time.c里,并且在time.h声明外部调用,结果如图,只能在time.c文件中使用,不能实现结构体外部调用。  将结构体的声明和调用都用在time.c文件中,会出现以下情况 *而将结构体在time.h文件中定义,并且声明外部调用,会出现以下情况 *然后,在time.c文件中加入一句话(struct  _fi...
链表基础知识总结
链表和数组作为算法中的两个基本数据结构,在程序设计过程中经常用到。尽管两种结构都可以用来存储一系列的数据,但又各有各的特点。数组的优势,在于可以方便的遍历查找需要的数据。在查询数组指定位置(如查询数组中的第4个数据)的操作中,只需要进行1次操作即可,时间复杂度为O(1)。但是,这种时间上的便利性,是因为数组在内存中占用了连续的空间,在进行类似的查找或者遍历时,本质是指针在内存中的定向偏移。然而,当...
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo