struct-关于C语言结构体指针数组的问题

问题描述

关于C语言结构体指针数组的问题
//结构体struct student{    int iNum;    char cName[16];    float fChineseScore;    float fMathScore;    float fEnglishScore;};typedef struct student STUDENT;//输入void InputTranscript(STUDENT MyClass[] int num){    int i;    printf(""请输入学生的成绩信息:n"");    for (i = 0; i < num; i++)    {        scanf(""%d %s %f %f %f"" &MyClass[i].iNum MyClass[i].cName        &MyClass[i].fChineseScore &MyClass[i].fMathScore &MyClass[i].fEnglishScore);    }}//输出单体void DisplayTranscriptOne(STUDENT MyScore){    int i;    STUDENT *p1 = MyScore;    printf(""请输入需要显示成绩信息的学生的序号:"");    scanf(""%d"" &i);    printf(""输出学生的成绩信息:n"");    printf(""%d %s %f %f %f"" (p1 + i) -> iNum (p1 + i) -> cName    (p1 + i) -> fChineseScore (p1 + i) -> fMathScore (p1 + i) -> fEnglishScore);}//输出全体void DisplayTranscriptAll(STUDENT *MyClass int num){    printf(""输出全体学生的成绩信息n"");    for (; MyClass < MyClass + num; MyClass++)    {        printf(""%d %s %f %f %f"" MyClass -> iNum MyClass -> cName         MyClass -> fChineseScore MyClass -> fMathScore MyClass -> fEnglishScore);    }}//修改void ModifyOne(STUDENT *MyInfo){    int i;    printf(""请输入需修改个人信息的学生的序号:"");    scanf(""%d"" &i);    printf(""请继续输入修改后的信息:"");    scanf(""%d %s %f %f %f"" (MyInfo + i) -> iNum &(MyInfo + i) -> cName     &(MyInfo + i) -> fChineseScore &(MyInfo + i) -> fMathScore &(MyInfo + i) -> fEnglishScore);}void main(void){    STUDENT sTranscript[10];     InputTranscript(sTranscript 10);    DisplayTranscriptOne(sTranscript);    DisplayTranscriptAll(*sTranscript 10);    ModifyOne(*sTranscript);}

--------------------Configuration: 4 - Win32 Debug--------------------
Compiling...
4.c
C:Users20453Desktop王俊森44.c(30) : error C2115: 'initializing' : incompatible types
C:Users20453Desktop王俊森44.c(64) : error C2115: 'function' : incompatible types
C:Users20453Desktop王俊森44.c(64) : warning C4024: 'DisplayTranscriptOne' : different types for formal and actual parameter 1
C:Users20453Desktop王俊森44.c(65) : error C2115: 'function' : incompatible types
C:Users20453Desktop王俊森44.c(65) : warning C4024: 'DisplayTranscriptAll' : different types for formal and actual parameter 1
C:Users20453Desktop王俊森44.c(66) : error C2115: 'function' : incompatible types
C:Users20453Desktop王俊森44.c(66) : warning C4024: 'ModifyOne' : different types for formal and actual parameter 1
Error executing cl.exe.

4.obj - 4 error(s) 3 warning(s)

求大神帮我看看这程序哪错了,怎么改,感激不尽

解决方案

传进去的实参和函数的形参类型不一样

#include<stdio.h>using namespace std;struct student{    int iNum;    char cName[16];    float fChineseScore;    float fMathScore;    float fEnglishScore;};typedef struct student STUDENT;//输入void InputTranscript(STUDENT MyClass[] int num){    int i;    printf(""请输入学生的成绩信息:n"");    for (i = 0; i < num; i++)    {        scanf(""%d %s %f %f %f"" &MyClass[i].iNum MyClass[i].cName        &MyClass[i].fChineseScore &MyClass[i].fMathScore &MyClass[i].fEnglishScore);    }}//输出单体void DisplayTranscriptOne(STUDENT *MyScore){    int i;    STUDENT *p1 = MyScore;    printf(""请输入需要显示成绩信息的学生的序号:"");    scanf(""%d"" &i);    printf(""输出学生的成绩信息:n"");    printf(""%d %s %f %f %f"" (p1 + i) -> iNum (p1 + i) -> cName    (p1 + i) -> fChineseScore (p1 + i) -> fMathScore (p1 + i) -> fEnglishScore);}//输出全体void DisplayTranscriptAll(STUDENT *MyClass int num){    printf(""输出全体学生的成绩信息n"");    for (; MyClass < MyClass + num; MyClass++)    {        printf(""%d %s %f %f %f"" MyClass -> iNum MyClass -> cName         MyClass -> fChineseScore MyClass -> fMathScore MyClass -> fEnglishScore);    }}//修改void ModifyOne(STUDENT *MyInfo){    int i;    printf(""请输入需修改个人信息的学生的序号:"");    scanf(""%d"" &i);    printf(""请继续输入修改后的信息:"");    scanf(""%d %s %f %f %f"" (MyInfo + i) -> iNum &(MyInfo + i) -> cName     &(MyInfo + i) -> fChineseScore &(MyInfo + i) -> fMathScore &(MyInfo + i) -> fEnglishScore);}void main(void){    STUDENT sTranscript[10];     InputTranscript(sTranscript 10);    DisplayTranscriptOne(&sTranscript[0]);    DisplayTranscriptAll(sTranscript 10);    ModifyOne(sTranscript);} 

解决方案二:

我这里输出一个出是对的,输出全体有点问题

解决方案三:

 #include<stdio.h>//结构体struct student{    int iNum;    char cName[16];    float fChineseScore;    float fMathScore;    float fEnglishScore;};typedef struct student STUDENT;//输入void InputTranscript(STUDENT MyClass[] int num){    int i;    printf(""请输入学生的成绩信息:n"");    for (i = 0; i < num; i++)    {        scanf(""%d %s %f %f %f"" &MyClass[i].iNum MyClass[i].cName        &MyClass[i].fChineseScore &MyClass[i].fMathScore &MyClass[i].fEnglishScore);    }}//输出单体void DisplayTranscriptOne(STUDENT *MyScore){    int i;    printf(""请输入需要显示成绩信息的学生的序号:"");    scanf(""%d"" &i);    printf(""输出学生的成绩信息:n"");    printf(""%d %s %.2f %.2f %.2fn"" (MyScore + i - 1) -> iNum (MyScore + i - 1) -> cName    (MyScore + i - 1) -> fChineseScore (MyScore + i - 1) -> fMathScore (MyScore + i - 1) -> fEnglishScore);}//输出全体void DisplayTranscriptAll(STUDENT *MyClass int num){    int i;    printf(""输出全体学生的成绩信息:n"");    for (i = 0; i < num; i++)    {        printf(""%d %s %.2f %.2f %.2fn"" (MyClass + i) -> iNum (MyClass + i) -> cName         (MyClass + i) -> fChineseScore (MyClass + i) -> fMathScore (MyClass + i) -> fEnglishScore);    }}//修改void ModifyOne(STUDENT *MyInfo){    int i;    printf(""请输入需修改个人信息的学生的序号:n"");    scanf(""%d"" &i);    printf(""请继续输入修改后的信息:n"");    scanf(""%d %s %f %f %f"" &(MyInfo + i - 1) -> iNum (MyInfo + i - 1) -> cName     &(MyInfo + i - 1) -> fChineseScore &(MyInfo + i - 1) -> fMathScore &(MyInfo + i - 1) -> fEnglishScore);}void main(void){    STUDENT sTranscript[10];     InputTranscript(sTranscript 10);    DisplayTranscriptOne(sTranscript);    DisplayTranscriptAll(sTranscript 10);    ModifyOne(sTranscript);    DisplayTranscriptOne(sTranscript);}

好了我改好了 运行上也没错误了

时间: 2024-09-13 23:15:36

struct-关于C语言结构体指针数组的问题的相关文章

关于c语言结构体指针数组的问题

问题描述 关于c语言结构体指针数组的问题 我有一个数组,里面每个成员都是结构体指针,我应该怎么给这个数组分配空间? 解决方案 指针变量的长度都是固定的,与你指向什么东西没关系的. 解决方案二: #include #define N 3 struct student { long int num; char name[20]; float score[3]; float aver; }; int main() { void Input(struct student stu[]); struct s

c语言-结构体指针数组指向结构体类型数组的问题

问题描述 结构体指针数组指向结构体类型数组的问题 #include<stdio.h> #include<stdlib.h> struct student { char num; char name[10]; int grade; }; void swap(struct student *p[],int n) { int k,m,i,j; struct student *d; k=0;m=n-1; while(k<m) { j=m-1;m=0; for(i=k;i<=j;

编程c语言-关于c语言结构体指针的问题

问题描述 关于c语言结构体指针的问题 结构体指针只包含了结构体的首地址还是包含了所有成员的地址?还有结构体的首地址是什么,比如第一个成员是一个数组,那么首地址是不是就是这个数组的首地址? 解决方案 结构体指针既是结构体首成员的地址,也是结构体的首地址.你说的是对的. 好比数组指针既是数组的首地址,也是数组第一个元素的首地址. 解决方案二: 指针也可以指向一个结构体变量.定义的一般形式为: struct 结构体名 *变量名; 前面已经定义了一个结构体 stu: struct stu{ char *

c语言-关于C语言结构体指针类型的强制转换(求大神详细解答)

问题描述 关于C语言结构体指针类型的强制转换(求大神详细解答) #include <iostream> #include <algorithm> using namespace std; typedef struct { string dna; int count; }DNA; DNA dna[101]; **int cmp(const void *a,const void *b) { DNA *aa = (DNA *)a; DNA *bb = (DNA *)b; return a

c 指针-C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误

问题描述 C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误 typedef struct s{ char *name; }student; /*将结构体读出并显示*/ int IsUsed(char str) { FILE *fp = fopen("test","rb"); student s; s.name = (char) malloc(sizeof(char)*20); fread(&s,sizeof(student),1,fp); wh

关于结构体指针数组的问题。。

问题描述 关于结构体指针数组的问题.. 如图,我这样定义与申请空间是否有问题,如有问题,请指出问题并帮我修改,谢谢 解决方案 #include #include using namespace std; struct? { int ? ? a; char ? ?b; float ? c; } x;//创建了一个变量x,包含三个成员 /************************************************************************......答案就在

C# 调用DELPHI 结构体指针数组出现的乱码

问题描述 delphi:TAirc=recordID:array[0..64]ofChar;MC:array[0..128]ofChar;LMAC:Single;XMAC:Single;WTNOL:Single;WTMAX:Single;WTMIN:Single;stdFWD:Single;stdAFT:Single;stdLFT:Single;stdRIT:Single;end;PAirc=^TArrAirc;functionGetAirc(varS:PAirc;aPath:PChar):In

c语言 结构体 指针-写了一个返回结构体指针的函数,编译时总是提醒没有初始化p,但是初始化了。

问题描述 写了一个返回结构体指针的函数,编译时总是提醒没有初始化p,但是初始化了. 源码 程序是用C写的,VS2013编译. 这是其中使用结构体的定义 这是哈夫曼函数的定义 解决方案 结构体指针的初始化 解决方案二: 哪有你所说的指针p啊 解决方案三: 是否用的c语言方式编译.编译器是否用c++方式编译

详解C语言结构体中的函数指针_C 语言

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.所以,标准C中的结构体是不允许包含成员函数的,当然C++中的结构体对此进行了扩展.那么,我们在C语言的结构体中,只能通过定义函数指针的方式,用函数指针指向相应函数,以此达到调用函数的目的. 函数指针 函数类型 (*指针变量名)(形参列表):第一个括号一定不能少. "函数类型"说明函数的返回类型,由于"()"的优先级高于"*",所以指针变量名外的括号必不可少.  注意指针函数与函数指针表示