回 帖 发 新 帖 刷新版面

主题:[讨论]二级指针的问题

#include "stdafx.h" 
#include "iostream" 
#include "string" 
using namespace std; 
class subject 


public: 
/* char *set(char **p) 

return *p; 

*/ 
void three_average(int p[][4],int n,char **ptr) 

int sum=0,i=0; 

switch(**ptr) 

case "chinese": 
for(;i<n;i++) 

sum+=p[i][0]+0; 

break; 
case "math": 
for(;i<n;i++) 

sum+=p[i][0]+1; 

break; 
case "english": 
for(;i<n;i++) 

sum+=p[i][0]+2; 

break; 
case "PE": 
for(;i<n;i++) 
sum+=p[i][0]+3; 
break; 
default: 
cout<<"no expression"; 
break; 

cout<<sum<<endl; 




}; 

int main(int argc, char* argv[]) 

char *b[4]={"chinese","math","english","PE"}; 
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 
subject s; 
for(int i=0;i<sizeof(b)/sizeof(char*);i++) 

s.three_average(a,3,b+i); 
return 0; 

高手帮忙解决呀?

回复列表 (共2个回复)

沙发

the errors is too much......

板凳

我这没有编译器,我把你的程序给注释一下吧:
#include "stdafx.h" 
#include "iostream" 
#include "string" 
using namespace std; 
class subject //定义一个类subject


public: 
/* char *set(char **p) //定义返回char*类型函数set(),参数**p说明p为一个二级指针,p的每一个元素指向一个一指针,对于char来说就是指向一个字符串

return *p; //可以认为它就是返回一个字符串

*/ 
void three_average(int p[][4],int n,char **ptr) //你这个函数在这儿定义我敢肯定的说一定会编译出错误来,因为在类内定义的函数都被默认为是内联的inline型的。要在类内声明,然后在类外定义

int sum=0,i=0; 

switch(**ptr) //*ptr是取ptr中的内容,它实际上是取的以char*为元素的第一个元素,char*型自然就是字符串了。**ptr要改为*ptr吧

case "chinese": 
for(;i<n;i++) 

sum+=p[i][0]+0; 

break; 
case "math": 
for(;i<n;i++) 

sum+=p[i][0]+1; 

break; 
case "english": 
for(;i<n;i++) 

sum+=p[i][0]+2; 

break; 
case "PE": 
for(;i<n;i++) 
sum+=p[i][0]+3; 
break; 
default: 
cout<<"no expression"; 
break; 

cout<<sum<<endl; 




}; 

int main(int argc, char* argv[]) 

char *b[4]={"chinese","math","english","PE"}; 
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 
subject s; 
for(int i=0;i<sizeof(b)/sizeof(char*);i++) 

s.three_average(a,3,b+i); 
return 0; 
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册