2015-02-27 3 views
-2
#include <iostream> 
using namespace std; 

char problem5(char alc[], char a, int *n); 

int main() { 


    char aloc1[]={ 'g','g','c','g','a','g','g','g','t','g'}; 
    int size=sizeof(aloc1)/sizeof(aloc1[0]); 
    cout << aloc1 << endl; 
    int nalc = problem5(aloc1, 'g' ,&size); 
    cout << nalc << endl; 
    return 0; 
} 

char problem5(char alc[], char c, int *n){ 
    int a = 0; 
    for(int i = 0; i < n; i++){ 
     if(alc[0]!=c){ 
      a++; 
     } 
    } 
    int nalc[a]; 
    int b=0; 
    for(int j = 0; j < n; j++){ 
     if(alc[0]!=c){ 
      nalc[b]=alc[j]; 
      b++; 
     } 
    } 
    *n=&a; 
    return nalc; 
} 

Почему у меня возникают ошибки на двух для циклов проблемы5? говорит что-то вроде сравнения между указателем и int. Как я могу исправить это, пока аргумент n остается указателем.сравнение между указателем и int C++ ellipse

+1

Возможный дубликат [Ошибка: ISO C++ запрещает сравнение между указателем и целым числом] (http://stackoverflow.com/questions/11987524/erroriso-c-forbids-comparison-between-pointer-and-integer) – Mgetz

+0

и там другая проблема выходит ... не может инициализировать возвращаемый объект типа 'char' с lvalue типа 'char [a]' –

+0

в обратном nalc; –

ответ

1

Использование *n для доступа к значению, на который указывает n:

for(int i = 0; i < *n; i++){ 

И изменить значение, на который указывает n равным a:

*n = a; 
+0

, который работает, спасибо большое. –

0

Вы не можете иметь адрес в for-loop. Попробуйте разыменовать указатель. а также отправьте свою точную ошибку, пожалуйста.

Смежные вопросы