您的位置:首页 > 其它

数组与指针(一)

2016-05-30 13:34 253 查看
数组和指针数组:同类元素的集合
指针:存放地址的变量
(图解1)


&a和a的区别

&a:整个数组的地址
a:在降级使用时代表了数组首元素的地址,在sizeof和&的时候代表了整个数组
尝试:
char arr[10]={};
int *p=arr;
int *p=&arr;//左右两边的类型不同,编译不通过
int (*p)[10]=&arr;//指向数组的指针
_________________________________________________________________________________________________________________________
int arr[5]={1,2,3,4,5};
sizeof(arr): 5 strlen(arr):5
sizeof(arr+1):4 strlen(&arr):5
sizeof(&arr):4 strlen(&arr+1):随机数
sizeof(&arr+1):4 strlen(arr+1):4
sizeof(*&a):20//数组的地址,解引用之后指向整个数组相当于int (*p)[5]
###&a+1:跳过了整个数组 开始的位置在‘\0’的后面
__________________________________________________________________________________________________________________________
char *name="abcde";
sizeof(name): 4 (指针类型的大小) strlen(name):5
sizeof(name+1):4 strlen(&name):随机值(取的是指针的地址,从指针地址处开始寻找'\0')
sizeof(&name):4(二级指针的大小) strlen(&name+1):随机数
sizeof(&name+1):4 strlen(name+1):4
数组和指针的访问方式
[code=cpp;toolbar:false">int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d %d",*(a+1),*(ptr-1));650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/76/F0/wKiom1ZfGGnjJCqsAAA0xsaSm5A212.png" title="Image2.png" alt="wKiom1ZfGGnjJCqsAAA0xsaSm5A212.png" />[/url]

利用联合完成大端小端的测试 void check()
{
union UN//所有变量共用同一块空间,空间大小是最大成员的空间,联合成员一次只能使用一个
{
int c;//4字节
char i;//1个字节
}
UN.c=1;
if(UN.i==1)
printf("little!");
else
printf("big!");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: