【问题标题】:Printing Function in C++ not working [closed]C ++中的打印功能不起作用[关闭]
【发布时间】:2014-01-03 04:51:13
【问题描述】:

这是打印数组元素的代码。我收到一个错误。任何人都可以找出代码有什么问题吗?

#include <iostream>

 using namespace std;

 int print_r(char arrName,int len){
            for(int i=0;i<len;i++){
                    cout<<arrName[i]<<"\t";        
            }
}

 int main(){

int a[3];
a[0]=1;
a[1]=2;
a[2]=3;

print_r(a,3);

return 0;
}    

【问题讨论】:

  • 认为问题是什么?编译器是什么问题?请展示自己一些的努力来解决这个问题。来吧。
  • 你为什么要问我们?运行代码时遇到什么问题?我可以看到一个明显的问题。
  • @Abhineet WOW 我不敢相信我错过了,谢谢。
  • @JonnyHenly:: 发生了,伙计 :-)
  • 您仍然没有列出您遇到的错误。您是否尝试过 google 得到的错误?这给了你什么信息?

标签: c++ arrays printing


【解决方案1】:
int print_r(char arrName,int len)

应该是

void print_r(int *arrName,int len)

您没有重新调整任何内容,因此它应该是 void,而不是 int,并且您将数组声明为整数为什么要使用 char?

【讨论】:

  • 我可以将它用于intchar,我认为我不可能需要char array 的另一个函数,例如void print_r(char *arrName,int len) 我可以为两者创建一个函数吗?
  • 除了重载我不知道另一种使用相同函数的方法来处理不同的参数,看看这个答案stackoverflow.com/questions/429125/override-and-overload-in-c
  • 如果要调用不同类型的函数,请使用模板 - template&lt;class Type&gt; void print_r(const Type* arrName, std::size_t len)
【解决方案2】:

改变::

int print_r(char arrName,int len){
     for(int i=0;i<len;i++){
     cout<<arrName[i]<<"\t";        
    }

int print_r(int* arrName,int len){ // You are passing int array to print_r
     for(int i=0;i<len;i++){
     cout<<arrName[i]<<"\t"; 
     return 0 ; // int print_r( int*, int ) will expect an int return value
    }

【讨论】:

    【解决方案3】:

    在函数中将int* 传递给char 参数是一个明显的错误。希望这会有所帮助-

    #include <iostream>
    
    using namespace std;
    
    void print_r(int arrName[],int len){
            for(int i=0;i<len;i++){
                    cout<<arrName[i]<<"\t";        
            }
    }
    
    int main(){
    
    int a[3];
    a[0]=1;
    a[1]=2;
    a[2]=3;
    
    print_r(a,3);
    
    return 0;
    }    
    

    您也可以将原型定义为

    void print_r(int *arrName, int len)
    {
     //Function body lies here
    }
    

    【讨论】:

      【解决方案4】:

      定义你的函数int print_r时,将返回类型改为void,即

      int print_r(char arrName,int len){
              for(int i=0;i<len;i++){
                      cout<<arrName[i]<<"\t";        
              }
      }
      
      //Instead use this
      void print_r(char arrName,int len){
              for(int i=0;i<len;i++){
                      cout<<arrName[i]<<"\t";        
              }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-10
        • 1970-01-01
        相关资源
        最近更新 更多