首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

数组长度函数解决思路

2013-04-09 
数组长度函数我写了一个类数组#includeiostream.h#includestringusing namespace stdclass student{c

数组长度函数
我写了一个类数组

#include<iostream.h>
#include<string>

using namespace std;

class student
{
char name[10];
int deg;
char level[7];
friend class process;

public:
student() {}
student(char na[], int d)
{
strcpy(name,na);
deg = d;
}
};

class process
{
public:
void trans(student s[])
{
int nOff = 0;
int i = 0;
for (i = 0; i < SIZE; i++)//如何调取s[]的长度?
{
nOff = s[i].deg;
if (nOff > 89)
{
nOff = 1;
}
else
{
if (nOff > 79)
{
nOff = 2;
}
else
{
if (nOff > 69)
{
nOff = 3;
}
else
{
nOff = 4;
}
}
}

switch (nOff)
{
case 1:
strcpy(s[i].level,"优");
break;
case 2:
strcpy(s[i].level,"良");
break;
case 3:
strcpy(s[i].level,"中");
break;
case 4:
strcpy(s[i].level,"及格");
break;
default:
strcpy(s[i].level,"不及格");
break;
}

}
}
};

void main(void)
{
int i = 0;
char name[10];
int deg;

student test[5];

for (i = 0; i < 5; i++)
{
cout << "Enter student " << i << " name: ";
cin >> name;
cout << "Enter student " << i << " deg: ";
cin >> deg;
}
}

[解决办法]
数组做实参时,退化成指针了
1) 要么后面在函数声明时 加一个长度信息 
像下面这样
void trans(student s[], int len);
调用的时候
trans(s,sizeof(s)/sizeof(s[0]))

2) 使用vector做数组容器

3)声明为数组的引用,但这样就无法传可变长数组了
[解决办法]
没法直接获取,解决方法一:给函数trans(student s[])添加一形参,改为trans(student s[],int size),由外部传入。
解决方法二:在student类内添加一静态变量,在构造函数中让此静态变量加1,析构中减1

热点排行
Bad Request.