我收到的警告信息如下: expect' int *'但参数类型为' int **' 以下是我的代码:
#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);
}
我正在获取此验证行,其中我使用&amp; dlugosc 作为arg调用 szyfr 方法。 任何人都知道我怎么能改变它,使它没有警告?
答案 0 :(得分:4)
变化:
int * dlugosc;
为:
int dlugosc;
在原始代码中,dlugosc被声明为指向整数的指针。使用'&amp;'当调用szyfr()时,您将指针的地址传递给整数(IE为int **),而不是指向整数的指针。通过将dlugosc的声明更改为int,您可以使用'&amp;'来引用其地址。
答案 1 :(得分:1)
我已经修改了您的代码,并且可以正常工作
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[0]);
printf("\nTwoje slowo: %s",slowo);
szyfr(slowo, &dlugosc[0], kod);
printf("\nTwoj kod: %s",kod);
}