Функция печати в C ++ не работает

0

Вот код для печати элементов массива. Я получаю сообщение об ошибке. Кто-нибудь может узнать, в чем проблема с кодом?

#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;
}    
  • 3
    Как вы думаете, в чем проблема? Что сказать , компилятор проблема? Пожалуйста, приложите некоторые усилия для решения этой проблемы самостоятельно. Давай.
  • 0
    Почему ты спрашиваешь нас? Какую проблему вы получаете, когда запускаете код? Я вижу одну очевидную проблему.
Показать ещё 3 комментария
Теги:
arrays
printing

4 ответа

2
Лучший ответ
int print_r(char arrName,int len)

должно быть

void print_r(int *arrName,int len)

вы не перенастраиваете что-либо, чтобы оно было недействительным, а не int, и вы объявили массив как целое, почему вы используете char?

  • 0
    Могу ли я использовать его как для int и для char , я думаю, что это невозможно, мне нужна другая функция для char array например void print_r(char *arrName,int len) Могу ли я сделать одну функцию для обоих ???
  • 0
    кроме перегрузки я не знаю другого способа использования одной и той же функции для разных аргументов, посмотрите на этот ответ stackoverflow.com/questions/429125/override-and-overload-in-c
Показать ещё 1 комментарий
1

Изменить::

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
    }
1

Явная ошибка в том, что вы передаете int* аргументу char в функцию. Надеюсь, что это help-

#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
}
0

При определении вашей функции 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";        
        }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню