只是想提前说声谢谢。我知道我可以通过示例设置指向数组的指针:
char myArray[100] = {""};
char *myArrayPtr = myArray;
但我对如何指向多维数组感到困惑。例如。
char myArray[10][100] = {""};
char *myArrayPtr = myArray;
我的想法是,除了第二个有点不同之外,这些是同一件事。第一个是指向大小为 [100] 的数组的指针,第二个是指向多维数组第一行的指针。这是正确的思维方式吗?如果可以,如何让第二个指针指向整个多维数组?
最佳答案
如果是
char myArray[100] = {""};
char *myArrayPtr = myArray;
起作用是因为 myArray
衰减 1 指向其第一个元素的指针。衰减后的类型是 char *
。
如果是
char myArray[10][100] = {""};
char *myArrayPtr = myArray;
将不起作用,因为衰减后 myArray
将指向它的第一个元素,衰减后的类型是 char (*) [100]
。
要使类型兼容,myArrayPtr
应该是同一类型。
char (*myArrayPtr)[100] = myArray;
1 数组到指针的转换发生在表达式中使用数组时,除非它是 sizeof
和一元 &
运算符的操作数。
关于c - 如何设置指向二维数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026830/