错误:对于类型为int *
的标量初始值设定项我正在尝试将数组传递给函数,但我在初始化步骤中不断收到此错误。
我该如何解决这个问题?
#include <iostream>
using namespace std;
void func (int *p[4]);
int main()
{
int *p[4]={ {1,4,5},{3,5,6},{6,6,2},{6,5,3}}; //The error appears here
func(p);
return 0;
}
void func (int *p[4])
{
for(int i=0;i<4;i++)
{
for(int j=0;j<1;j++)
{ cout<<p[i][j]; }
}
cout<<" \t";
}
答案 0 :(得分:2)
变量p
是指针的数组。 { 1, 4, 5 }
不是指针。
您需要将p
数组数组:
int p[4][3] = { ... };
由于这一变化,您还必须更改func
函数参数,因为p
现在将衰减为指向类型为int (*)[3]
的数组的指针(即, func
的参数应为int (*p)[3]
)。
答案 1 :(得分:2)
问题是p
。
根据这个定义:
int *p[4];
这是指向int
的4个元素指针数组
我猜你想要这个:
int (*p)[3];
指向int
s的3个元素数组的指针
另外要使用初始化,您需要一个数组。
答案 2 :(得分:0)
这会有效,但是你会丢失数组信息,因为它们会decay into pointers:
var userInfo = notification.userInfo
if let keyboardFrame = (userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue{
print(keyboardFrame.height)
if keyboardFrame.size.height <= 0 { // To fix bug on iOS 11
if let newKeyboardFrame = (userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue{
print(newKeyboardFrame.height)
}
}
}
view.layoutIfNeeded()