#include<iostream>
using namespace std;
int fun(char *);
int main()
{
int a;
char str[]="abcdefghijklmn";
a=fun(str); 
return 0;
}
int fun(char *s) 

int num=0; 
for(int i=0;;)

num+=*s;
s++; 

return num;
}这个程序运行时为什么会出现错误。应该怎么修改?

解决方案 »

  1.   

    #include<iostream>
    using namespace std;
    int fun(char *);
    int main()
    {
    int a;
    char str[]="abcdefghijklmn";
    a=fun(str); 
    cout<<a; 
    return 0;
    }
    int fun(char *s)  
    {  
    int num=0;  
    while(*s)
    {num++;s++;}
    return num;
    }
    你这个是死循环
    for(int i=0;;)
    {  num+=*s;s++;  
    }  
    在说num+=*s;
    这个也不对啊,类型不同
      

  2.   

    fun函数有问题:1、出现死循环;2、内存访问越界报错,应该修改如下:int fun(char *s) 

    int nSize = strlen(s);
    int nNum=0; 
    for( int i=0; i<nSize; i++ )

    num+=*s;
    s++; 
    }return nNum;
    }  
      

  3.   


    int fun(char *s)  
    {  
    int num=0;  
    while(*s!='\0')
    {  
    num+=*s;
    s++;  
    }  
    return num;
      

  4.   

    for(int i=0;;)
     {  
    num+=*s;
     s++;  

    ------------
    你这个for要跑到啥时候才是个头啊