留言与评论(共有 0 条评论) |
发布时间:2020-04-15 16:56:27
a+1不是数组+1,而是数组的第一个元素的指针+1,即&a[0]+1,它等于&a[1],即数组的第二个元素的地址(指针)。int *ptr2 = (int*)((int)a + 1);是把指针a强制为int型再+1,把+1后的值再强制成int *型指针,最后赋给int *型指针ptr2。所以int *ptr2 = (int*)((int)a + 1);与int *ptr2 = a + 1;等价。建议初学者不要纠结什么“大端”、“小端”模式,不是因为难,而是因为简单得不值得去考究;它是系统安排多字节数据在内存中的顺序问题,对用户来说一般是透明的,不必去探究;等略有长进,自然完全明白。
数组相当于一连串数字,每个数都是有一个固定的位置,a【2】就表示数组中第二个字符(起始元素为a【1】),然后要进行运算就相当于取数组中的元素位置。就比如说有一排的人50个年龄不同(相当于把他们的年龄当做数组中的数据),然后你说把第一个和最后一个人的年龄相加,即a【1】+a【50】=数组中两个数据的和。懂了吗?再不懂我也没办法了
留言与评论(共有 0 条评论) |
全站搜索