菜鸟求大虾赐教:c++问题

#include<vector>
#include<fstream>
#include<sstream>
#include<iostream>
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
void print(const vi&)
void input(vvi&);
bool findvec(const vvi&, vi&);
int main(){
vvi matrix;
input(matrix);
vi vecio;
if(findvec(matrix, vec))
print(vec);
}
void print(const vi&v){
for(int i=0; i<v.size():++i)
cout<<v[i]<<" ";
cout<<"\n";
}
void input(vvi&m){
istream in("abc.in");
int n,t; in>>n;
m.resize (n);
for(sting s; n-- && getline(in, s);)
for(istringstream sin(s) ; sin>>t; m[m.size()-n-1].push_back(t));
}
bool findvec(const vvi& matrix, vi& v){
for(int i=0; i<matrix.size(); ++i)
for(int j=0; j<matrix[i].size(); ++j)
if(matrix[i][j]==-1){
v= matrix[i];
return true;
}
return false;
}

运行之后出现这一景观,请大虾 help me !!!
warning C4518: 'void ' : storage-class or type specifier(s) unexpected here; ignored error C2146: syntax error : missing ';' before identifier 'input'
fatal error C1004: unexpected end of file found
加了分号的话,下面就会冒出更多错误了

第1个回答  2010-11-30
1. 俺不熟悉 vc,只能说,预编译头文件的意思是,先把一部分头文件预编译了,以后的编译要快一些;一些正式版的编译软件可以预编译头文件,并且可以根据你引用的、或者你指定的头文件进行预编译;至于 vc2005express 里面有没有这个设置,还是得你从菜单里找;

2.你是使用的 win64 操作系统吧?

3.这个问题很简单啊,这个参数返回的是一个指针,而且指向了引用形参的地址;也就是说,funcl(b) 的返回值是指向 b 的指针;funcl(d) 的返回值是指向 d 的指针;第一个例子 *funcl(b) 是对指向 b 的指针求内容,当然是 4;第二个例子 *funcl(d)=a 左边对指向 d 的指针求内容,是 d,而且是一个左值(可以被赋值) 右边是 a 的值,结果相当于 d=a,然后再输出 d,当然就是 a 的值了;

4.这些文章说的次序是很正确的,按这种次序来学,知其然也知其所以然,掌握的内容比较扎实,越学越明白,以后应用起来也得心应手,能举一反三;当然也有速成的法子,比如说直接看例程序学 MFC 应用,能迅速上手做一些东西(如果你有一定的“猜测”能力的话可以学习得相当快),然后再补课。前者大概相当于正宗少林武功,后者多半就是韦小宝的普陀掌、般若掌了,没有一定的天赋,补课事倍功半,很艰难的(MFC 机器里程序非常糟糕,极易把人带上歪路)。
你的串号我已经记下,采纳后我会帮你制作
第2个回答  2010-11-29
typedef vector<int> vi;
typedef vector<vi> vvi;
void print(const vi&) //<----这里少了个分号
void input(vvi&);

把新错误贴出来本回答被提问者和网友采纳
第3个回答  2010-11-29
楼上说的非常清楚,楼主你太粗心了。
第4个回答  2010-11-29
void print(const vi&)
少分号