函数声明:void DES(int *str,int key); 主函数中调用函数:DES(str,key); 已知主函数中str和key都是为大小为64的int数组 报错:'function' : 'int ' differs in levels of indirection from 'int [64]' 可能是什么原因?
时间: 2024-03-24 21:37:19 浏览: 22
这个错误提示表明你在函数调用时传递的参数类型与函数声明中的参数类型不匹配。
根据你提供的信息,str 和 key 都是大小为 64 的 int 数组,而函数声明中的 str 参数是一个指向 int 类型的指针,而不是一个 int 数组。因此,在函数调用时,你需要将数组名转换为指针类型,然后将该指针传递给函数。
正确的函数调用应该是这样的:
```
DES(&str[0], key);
```
其中 &str[0] 表示 str 数组的第一个元素的地址,它是一个指向 int 类型的指针,可以作为函数的第一个参数传递。key 是一个 int 类型的值,表示 DES 加密算法的密钥。
如果你需要在函数内部访问整个 str 数组,可以在函数内部使用指针运算符来访问它。例如,可以使用 *(str+i) 来访问数组的第 i 个元素。
相关问题
函数声明:void DES(int *str,int key); 主函数中调用函数:DES(str,key); 有什么问题吗
这个函数调用没有问题,只要你已经定义了指向 int 类型的指针 str,并且给 key 赋了一个 int 值。
不过,你需要注意的是,在调用函数时,你需要确保 str 指向了足够的内存空间,以便函数可以对它进行加密操作。如果 str 指向的内存空间过小,会导致函数访问越界,出现未定义的行为。
另外,由于该函数的返回值是 `void`,所以调用函数后不会返回任何值。如果你需要获取加密后的结果,可以考虑将加密后的数据写入到另一个指针所指向的内存中,或者将加密后的数据作为函数的一个输出参数返回。
函数声明:void DES(int *str,int key); 主函数中调用函数:DES(str,key); 已知主函数中str和key都是为大小为64的int数组 有什么问题吗
由于 str 是一个指向 int 类型的指针,而不是 int 数组,所以在函数调用时需要注意。如果你传递一个数组名作为参数,它在函数调用时会被自动转换为一个指向数组第一个元素的指针。因此,你可以将数组名传递给函数,而不必使用 & 运算符获取该数组的地址。
所以,函数调用应该改为:
```
DES(str, key);
```
其中 str 是一个指向 int 类型的数组的指针,它指向的是数组的第一个元素。key 是一个 int 类型的值,表示 DES 加密算法的密钥。
如果你需要在函数内部访问整个 str 数组,可以在函数内部使用指针运算符来访问它。例如,可以使用 *(str+i) 来访问数组的第 i 个元素。