这就是我正在做的事情:
TFSR: (TFSR Optional("Name") => Optional("Address"))
Returning false
TFSR: (TFSR Optional("Address") => Optional("City"))
Returning false
TFSR: (TFSR Optional("City") => Optional("State"))
Returning false
TFSR: (TFSR Optional("State") => Optional("Zipcode"))
Returning false
GA
ADDR: `Optional("2112 Murray Avenue ") Optional("Pittsburgh ") Optional("PA") Optional("15217")'
(lldb)
我的目标是尝试指向正确的结构或左侧结构:
func geocodeAddress() {
//...
geoCoder.geocodeAddressString(addr, completionHandler: {
(placemarks: [CLPlacemark]?, error: NSError?) -> Void in
//...
} as! CLGeocodeCompletionHandler) //<<< Thread 1: EXC_BREAKPOINT (code=1, subcode=0x10006c518)
}
编译器说:
geocodeAddressString()
如何让我的代码工作?
答案 0 :(得分:1)
您将LAYERS
定义为3D指针数组。你想要一个指向3D数组的const指针:
const uint16_t (*LAYERS)[TOTAL_LAYERS][NBROW][NBCOL];
但要使用此功能,您需要使用以下语法:
(*LAYERS)[a][b][c];
如果您想将LAYERS
索引为3D数组,则可以这样定义:
const uint16_t (*LAYERS)[NBROW][NBCOL];
并按照以下方式分配:
LAYERS = LAYERS_RIGHT;
这利用了这样的事实:在某些上下文中,数组衰减为指向第一个元素的指针。上述任务就是其中之一。
LAYERS_RIGHT
是const uint16_t [NBROW][NBCOL]
的数组,因此其中一个数组元素的地址类型为const uint16_t (*)[NBROW][NBCOL]
,这是LAYERS
的类型。
然后LAYERS[0]
引用第一个const uint16_t [NBROW][NBCOL]
,LAYERS[1]
,第二个,等等。
所以在上面的作业之后,这个表达式
LAYERS_RIGHT[a][b][c];
产生与此表达式相同的值:
LAYERS[a][b][c];