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:15 编辑
int * ptr1 = (int *)(&aa + 1) ; // ptr1 跨过整个 aa 的存储区域,指向 aa 结束的位置
int * ptr2 = (int *)(*(aa + 1)) ; // ptr2 指向 aa 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]