2016-09-13 18 views
-2

予期した 'int *'ですが、引数は 'int **'タイプです以下は私のコード:*予期した 'int *'でも引数は 'int **'型です*警告はc

#include<string.h> 
#include<stdio.h> 
#define MAX_DL_SLOWA 30 


void szyfr(char oryginalne[MAX_DL_SLOWA], int* dlugosc, int zaszyfrowane[MAX_DL_SLOWA+1]) { 
    int i, j; 
    *dlugosc = strlen(oryginalne); 
    for (i = 0; i < *dlugosc; i++) { 
     if (i < *dlugosc-1){ 
       j = i + 1; 
     }else{ 
      j = i + 1 - *dlugosc; 
     } 
     zaszyfrowane[i] = (int)oryginalne[j] - (int)'a'; 
    } 
} 

void main(){ 

    char slowo[MAX_DL_SLOWA]; 
    int* dlugosc; 
    int kod[MAX_DL_SLOWA+1],i; 

    //Wczytanie i szyfrowanie 
    printf("Podaj slowo: "); 
    scanf("%s",&slowo); 
    printf("\nTwoje slowo: %s",slowo); 
    szyfr(slowo, &dlugosc, kod); 
    printf("\nTwoj kod: %s",kod); 
} 

は私が引数として& dlugoscszyfrメソッドを呼び出しています。この検証ラインを取得しています。 誰も私がそれを警告なしで動作させるためにどのように変更することができますか考えていますか?

+3

'int * dlugosc;' - > 'int dlugosc;' – BLUEPIXY

+0

'int *'引数は 'int **'引数を渡すことができませんでしたか? – immibis

+3

警告はかなり明確に言われているようです。あなたが理解していない警告のどの部分を説明できるかは、良いことでしょう。 – kaylum

答えて

4

変更:

のint * dlugosc。

int型dlugosc。

元のコードでは、dlugoscは整数へのポインタとして宣言されています。 szyfr()が呼び出されたときに '&'を使用すると、整数へのポインタではなく、ポインタのアドレスを整数(IEとint **)に渡します。 dlugoscの宣言をintに変更することで、アドレスを '&'で参照することができます。

関連する問題