| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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 个字节。  
 
 
 |   
 
 
 
 |