c语言报错不允许使用不完整类型,让用户自定义数组大小。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言报错不允许使用不完整类型,让用户自定义数组大小。相关的知识,希望对你有一定的参考价值。
void Input()
struct student *num1;
int num;
printf("请输入学生的总人数:\n");
scanf("%d,&num");
num1 = (struct student*)calloc(num,sizeof(struct student));//其中struct下显示不允许使用不完整类型。
printf("");后边没写完
struct student
int num;/*学号*/
char name[20]; /*姓名*/
char sex; /*性别(M/W)*/
int NO; /*名次*/
float score1; /*第一门课程成绩*/
float score2; /*第二门课程成绩*/
float sum; /*成绩总和*/
;这是结构体变量的定义
num1 = (struct student*)calloc(num,sizeof(struct student));不是这么写,应该是这样 :
你用的是什么,编译没报错?还是这么显示有错误啊,我用的是visual studio 2010。谢谢了。
追答// 刚才没仔细看,编译了一下,才发现不少问题,试试这个。#include "stdio.h"
#include "malloc.h"
struct student
int num;/*学号*/
char name[20]; /*姓名*/
char sex; /*性别(M/W)*/
int NO; /*名次*/
float score1; /*第一门课程成绩*/
float score2; /*第二门课程成绩*/
float sum; /*成绩总和*/
;
void Input()
student *num1;
int num;
printf("请输入学生的总人数:\\n");
scanf("%d", &num);
//scanf("%d,&num");
num1 = (student*)calloc(num,sizeof(student));//其中struct下显示不允许使用不完整类型。
参考技术A void Input()
struct student *num1;
int num; printf("请输入学生的总人数:\n");
num1 = (struct student*)calloc(num,sizeof(struct student));//其中struct下显示不允许使用不完整类
scanf("%d\n",&num);
printf("");
参考技术B 问题源自你的struct student定义,把目前的全部代码贴出来
你的struct student要在函数定义之前。问题不难,要么截图,或者hi我。 参考技术C 定义struct student
C ++“不允许使用不完整的类型”,试图在类内部创建函数数组
我正在尝试在类内部创建本质上是一个函数数组。
所以这是一个简单的示例,它将位于.h文件中。
class myClass {
private:
typedef float (*thisMayNotBeNamedRightButFrackIt) (int& a, int& b, float& c);
float myFunction1 (int& a, int& b, float& c)
{
// Do stuff here...
}
float myFunction2 (int& a, int& b, float& c)
{
// Do some other stuff here...
}
thisMayNotBeNamedRightButFrackIt functions[] =
{
myFunction1,
myFunction2
};
};
因此,“ functions []”处出现“不允许使用不完整类型”。
我该如何解决?
编辑
我从这段代码中得到了这个想法,尽管它不在类之内,但仍可以很好地编译;
#include <iostream>
using namespace std;
typedef int (*IntFunctionWithOneParameter) (int a);
int function(int a){ return a; }
int functionTimesTwo(int a){ return a*2; }
int functionDivideByTwo(int a){ return a/2; }
void main()
{
IntFunctionWithOneParameter functions[] =
{
function,
functionTimesTwo,
functionDivideByTwo
};
for(int i = 0; i < 3; ++i)
{
cout << functions[i](8) << endl;
}
}
您发布的代码有很多问题:
- 类定义后没有分号。
- [
Class
而不是class
- 没有为
functions
成员设置固定大小,这是不允许的。您需要显式设置数组的大小。 - 成员函数指针与“常规”函数指针不同。成员函数指针具有隐式
this
作为第一个参数,因为它们需要调用一个对象。因此,myFunction
的类型不是myArrayOfFunctions
。如果将myFunction
和myFunction2
设为静态,则可以将它们存储为常规函数指针。这是一个选择吗? - 名称
myArrayOfFunctions
非常令人困惑,因为它根本不是数组。
除最后一个以外的所有内容都将导致您的代码无法编译。
以上是关于c语言报错不允许使用不完整类型,让用户自定义数组大小。的主要内容,如果未能解决你的问题,请参考以下文章