z****e 发帖数: 2024 | 1 int (*m)[10]:
m是一个指针,指向一个 array of 10 ints. m的类型是:int (*) [10]?
int m[10]:
m是一个指针,指向一个 array of 10 ints. m的类型是:int* ?(函数传递时候)
但是我知道,int (*) [10] 和 int* 是不一样的类型对吧?那怎么不一样的类型,却
表示一样的东西:m是一个指针,指向一个 array of 10 ints.?
请大侠指教。
还有:
int*
int [ ]
两者的区别。
int (*) [ ] 是不是一个类型(没有size)?int (*) [5]和 int (*) [10]是不是一样的类型? | z****e 发帖数: 2024 | 2 刚才试了试,发现int (*) [5]和 int (*) [10]是不一样的。 | M*******i 发帖数: 82 | 3 int m[10]:
the type of m is int[10] not int*. It can be converted to int* automatically
under certain situations.
int(*f)[10]:
f can hold the position of m.
f = &m is correct.
f = m is wrong.
【在 z****e 的大作中提到】 : int (*m)[10]: : m是一个指针,指向一个 array of 10 ints. m的类型是:int (*) [10]? : int m[10]: : m是一个指针,指向一个 array of 10 ints. m的类型是:int* ?(函数传递时候) : 但是我知道,int (*) [10] 和 int* 是不一样的类型对吧?那怎么不一样的类型,却 : 表示一样的东西:m是一个指针,指向一个 array of 10 ints.? : 请大侠指教。 : 还有: : int* : int [ ]
| z****e 发帖数: 2024 | 4 no.
automatically
【在 M*******i 的大作中提到】 : int m[10]: : the type of m is int[10] not int*. It can be converted to int* automatically : under certain situations. : int(*f)[10]: : f can hold the position of m. : f = &m is correct. : f = m is wrong.
| e******d 发帖数: 310 | 5 int (*) [ ] 是不是一个类型(没有size)?int (*) [5]和 int (*) [10]是不是一样
的类型?
no,
give you an example,
int a[][5] ={{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}};
int b[][10] ={{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}};
int (*c)[5] = a[0];
int (*d)[10] = b[0];
//note (c+1) - c is different from (d+1) - d
// (c+1) - c should be sizeof(int)*5
//(d+1) - d should be sizeof(int)*10 | D****A 发帖数: 360 | 6 1. yes
2. no
【在 e******d 的大作中提到】 : int (*) [ ] 是不是一个类型(没有size)?int (*) [5]和 int (*) [10]是不是一样 : 的类型? : no, : give you an example, : int a[][5] ={{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}}; : int b[][10] ={{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}; : int (*c)[5] = a[0]; : int (*d)[10] = b[0]; : //note (c+1) - c is different from (d+1) - d
| M*******i 发帖数: 82 | 7 I think I clearly explained your misunderstanding
【在 z****e 的大作中提到】 : no. : : automatically
| z****e 发帖数: 2024 | 8 good examples.
【在 e******d 的大作中提到】 : int (*) [ ] 是不是一个类型(没有size)?int (*) [5]和 int (*) [10]是不是一样 : 的类型? : no, : give you an example, : int a[][5] ={{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}}; : int b[][10] ={{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}; : int (*c)[5] = a[0]; : int (*d)[10] = b[0]; : //note (c+1) - c is different from (d+1) - d
| M*******i 发帖数: 82 | 9 this does not compile.
the write way is:
int (*c)[5] = &a[0];
【在 e******d 的大作中提到】 : int (*) [ ] 是不是一个类型(没有size)?int (*) [5]和 int (*) [10]是不是一样 : 的类型? : no, : give you an example, : int a[][5] ={{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}}; : int b[][10] ={{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}; : int (*c)[5] = a[0]; : int (*d)[10] = b[0]; : //note (c+1) - c is different from (d+1) - d
| z****e 发帖数: 2024 | 10 Thanks.
but i think easyroad means int (*c)[5]=a;
【在 M*******i 的大作中提到】 : this does not compile. : the write way is: : int (*c)[5] = &a[0];
| z****e 发帖数: 2024 | 11 what you said was right. but just not quite on the points.
Thank you anyway.
【在 M*******i 的大作中提到】 : I think I clearly explained your misunderstanding
| M*******i 发帖数: 82 | 12 I guess it still involves an implicit conversion.
In some implementations, the value of the pointer is shifted by an offset.
【在 z****e 的大作中提到】 : Thanks. : but i think easyroad means int (*c)[5]=a;
|
|