数组指针/指针数组

int (*p)[n], 是一个数组指针(只有一个指针),p指针指向一个整型的一维数组,在指针的移动过程中存在一个问题,那就是p+1,将指向的下一个维数字,即p的指向地址增加了4*n

int *p1[n],是一个指针数组(有n个指针),是一个整型指针数组,有n个指针类型的数组元素。


  1 #include<stdio.h>
  2
  3 int main()
  4 {
  5         int i,j;
  6         int a[10] = {0,1,2,3,4,5,6,7,8,9};
  7         int b[10][10] = {
  8                 {0,1,2,3,4,5,6,7,8,9},
  9                 {0,1,2,3,4,5,6,7,8,9},
 10                 {0,1,2,3,4,5,6,7,8,9},
 11                 {0,1,2,3,4,5,6,7,8,9},
 12                 {0,1,2,3,4,5,6,7,8,9},
 13                 {0,1,2,3,4,5,6,7,8,9},
 14                 {0,1,2,3,4,5,6,7,8,9},
 15                 {0,1,2,3,4,5,6,7,8,9},
 16                 {0,1,2,3,4,5,6,7,8,9},
 17                 {0,1,2,3,4,5,6,7,8,9}};
 18         int *p1[10] ;
 19         int (*p2)[10];
 20         int (*p3)[10];
 21         p2 = a; 

/*我们将p2赋值为一个一维数字,但在显示数字内容之时,我们需要考虑指针的偏移范围。编译过程会产生警告,可用二维数组进行赋值。

$ gcc -o test_1 test_1.c
test_1.c: In function ‘main’:
test_1.c:21:5: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
  p2 = a;
*/

 22         for( i = 0 ;i < 10 ; i++)
 23         {
 24                 p1[i] = b[i];
 25                 p3 = b;
 26         //      (*p2)[i] = a[i];
 27                 printf("\n//\n");
 28                 printf("The *(p2 + %d) is %d\n",i,*(p2 + i));
 29                 printf("The *(p2)[%d] is %d\n",i,*(p2)[i]);
 30                 printf("The *p2[%d] is %d\n",i,p2[i]);
 31                 printf("The *p2[0][%d] is %d\n",i,p2[0][i]);
 32
 33                 printf("\n");
 34                 printf("The *(p3 + %d) is %d\n",i,*(p3 + i));
 35                 printf("The *(p3)[%d] is %d\n",i,*(p3)[i]);
 36                 printf("The *p3[%d] is %d\n",i,p3[i]);  
 37                 printf("The *p3[0][%d] is %d\n",i,p3[i][i]);
 38         /*      for(j = 0; j < 10 ; j++)
 39                 {
 40                         printf("The *p1[%d][%d] is %d\n",
 41                                         i,j,*(*(p1 + i) + j));
 42         
 43                 }
 44
 45                 printf("\n----------------------------\n");
 46
 47                 for(j = 0; j < 10 ; j++)
 48                 {
 49                         printf("The *p1[%d][%d] is %d\n",
 50                                         i,j,p1[i][j]);
 51                 }
 52          */
 53                 printf("\n");
 54         }       
 55         return 0;
 56 }

在C++ 中vector来存储数据,那么有一个问题,vector是相当一个数组指针存储数据,还是一个指针数据的模式去存放着数据???正在纠结着。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值