|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请问大佬们,像我这样定义一个指针数组
int nums[3]={1,2,3};
int(*ptr)[3]=&nums;
关于括号里面的[3]到底是什么含义呢?
是不是[3]中的3可以是任意正数?[3]表示的是指针指向的数组类型是int还是指数组长度是3呀?
本帖最后由 jackz007 于 2021-12-8 22:06 编辑
此语句定义 ptr 为指向末维是 3 的二维数组的指针。
- #include <stdio.h>
- int main(void)
- {
- int d[][3] = {{ 1 , 2 , 3} ,\
- { 4 , 5 , 6} ,\
- { 7 , 8 , 9} ,\
- {10 , 11 , 12}} ;
- int i , j , (* ptr)[3] = d ;
- for(i = 0 ;i < 4 ; i ++) {
- printf("%d" , * (* (ptr + i))) ;
- for(j = 1 ; j < 3 ; j ++) printf(" %d" , * ( * (ptr + i) + j)) ;
- printf("\n") ;
- }
- for(i = 0 ;i < 4 ; i ++) {
- printf("%d" , ptr[i][0]) ;
- for(j = 1 ; j < 3 ; j ++) printf(" %d" , ptr[i][j]) ;
- printf("\n") ;
- }
- }
复制代码
在这个代码中
定义 ptr 指向末维为 3 的二维数组 d , 则 * ptr 指向 d[0],* (ptr + 1) 指向 d[1],* (ptr + 2) 指向 d[2],就是说,这样定义出来的指针 ptr 步进的单位是 3 个整型元素,每个整型数占用 4 个字节,那么,ptr 的步进单位是 12 个字节,而通过
定义出来的指针 ptr 的步进单位是 1 个整型数,也就是说,是 4 个字节。
|
|