首页 > 代码库 > 关于取数组地址的识记(&s+1,s+1,&s[0]+1)
关于取数组地址的识记(&s+1,s+1,&s[0]+1)
1 #include <stdio.h> 2 #include <malloc.h> 3 4 int main() 5 { 6 char s1[] = {‘H‘, ‘e‘, ‘1‘, ‘2‘, ‘o‘}; 7 char *p=(char *)(s1+3); 8 printf("*p:%c\n",p[0]); 9 char *p2=(char *)(&s1[0]+4);10 printf("*p2:%c\n",p2[0]);11 char *p3=(char *)(&s1+1);12 printf("*p3:%c\n",p3[-1]);13 14 return 0;15 }
输出:
*p:2
*p2:o
*p3:o
在这之前,取数组值时老是不能区分s1+2,&s1[0]+2,&s1+2之间的区别,今天特意测试了下,原来他们的区别如下:
s1+2:
指从s1数组0位开始向下移动2位的取值。
&s1[0]+2:
同s1+2一样,指从s1数组0位开始向下移动2位的取值。
特别注意点:&s1+1:
指的是移到s1整个数组的下一个位置,相当于移出了s1数组。
关于取数组地址的识记(&s+1,s+1,&s[0]+1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。