C 带“的函数;int x[][n]";作为论据
以这种方式定义函数时:C 带“的函数;int x[][n]";作为论据,c,arrays,pointers,C,Arrays,Pointers,以这种方式定义函数时: void someFunction(int x[][n]){ //Function instruction } x objet到底是什么: 它是一个指向未定义整数数组的n个指针数组吗 使用指针语法的同义定义是什么 程序如何在内存中分配x对象。它是指向未指定大小的内存块的指针,该内存块可被myn整除 它的索引形式为x[i][j]=*((int*)x+i*n+j) 同义词。不太为人所知的是: void someFunction(int (*x)[n]){ //F
void someFunction(int x[][n]){
//Function instruction
}
x objet到底是什么:
它是一个指向未定义整数数组的n个指针数组吗
使用指针语法的同义定义是什么
程序如何在内存中分配x对象。它是指向未指定大小的内存块的指针,该内存块可被my
n
整除
它的索引形式为x[i][j]=*((int*)x+i*n+j)
同义词。不太为人所知的是:
void someFunction(int (*x)[n]){
//Function instruction
}
它与指向内存块的指针数组不同,当您将函数定义为
void someFunction(int x[][n]) { ... }
复印机将其解释为
void someFunction(int (*x)[n]) { ... }
它是一个指向未定义整数数组的n个指针数组吗
否。x
是指向n
整数数组的指针
使用指针语法的同义定义是什么
你是说一个块,一个多维数组吗?@rullof,是的。虽然我说过block是精确的,并且避免与指向数组
T**
的指针数组混淆。x对象总是指向第一个元素,括号只是语义上的。它可以是多维的,也可以不是多维的,因为inta
与inta[1]
相同,intb[n]
与intb[1][n]
相同。我说得对吗?这是错误的x[i][j]
不是*(x+i*n+j)
。它甚至不是正确的类型。@StoryTeller:“x指向第一个数组,它是int[n]类型,而不是第一个元素。”第一个数组是第一个元素——二维数组的第一个元素。如果您这样定义它有什么区别:void someFunction(int x[]){…}
或void someFunction(int x[n]){…}
@rullof:如果你问void-someFunction(int x[])
和void-someFunction(int x[n])
之间有什么区别,那就没有区别了。如果你问它们和void-someFunction(int x[[n])之间有什么区别
,那么,前者,x
是指向int
的指针,但在后者,x
是指向nint
@EricPostpischil数组的指针;我认为唯一的区别是,如果n
没有全局定义,第二个someFunction(int x[n])
将给出编译时错误。
void someFunction(int (*x)[n]) { ... }