我是扬帆起航 发表于 2022-10-15 20:54:47

c语言指针数组

int aa = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        int *ptr1 = (int *)(&aa + 1);
        int *ptr2 = (int *)(*(aa + 1));
这个代码的int *ptr1 = (int *)(&aa + 1)与int *ptr1 = &aa + 1有什么区别呢?
这个&aa指的是什么呢?

jackz007 发表于 2022-10-15 21:14:58

本帖最后由 jackz007 于 2022-10-15 21:15 编辑

      int * ptr1 = (int *)(&aa + 1)   ; // ptr1 跨过整个 aa 的存储区域,指向 aa 结束的位置
      int * ptr2 = (int *)(*(aa + 1)) ; // ptr2 指向 aa

桃花飞舞 发表于 2022-10-15 21:16:29

c语言指针数组 ,数组里面存放的是指针变量。
int aa = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int *ptr1 = (int *)(&aa + 1);
      int *ptr2 = (int *)(*(aa + 1));
这个代码的int *ptr1 = (int *)(&aa + 1)与int *ptr1 = &aa + 1有什么区别呢?(int *)(&aa + 1) 加了(int *)强制类型转换为int *型
int *ptr1 = (int *)(&aa + 1)等式两边的数据类型一致为int *,int *ptr1 = &aa + 1   左边为int *型 右边为int (*)类型 类型不一致。
这个&aa指的是什么呢?aa作变量,表示数组的一整个空间,aa代表整个数组,&aa表示指向整个数组的指针                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
页: [1]
查看完整版本: c语言指针数组