数组与指针(一)
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!");
}
指针:存放地址的变量
(图解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!");
}
相关文章推荐
- 优化的冒泡排序的实现
- C专家编程读书笔记——time_t知识链接
- 程序的环境
- swift基础之协议
- 浮点数在内存中的存储(简述)
- 关于#define你知道多少?
- 计算机的大端模式和小端模式
- android6.0中全屏处理(禁止通知栏下滑)
- 看似简单的if语句
- 神奇的位操作符
- Java - PAT - 1022. D进制的A+B (20)
- CDH5 Hadoop集群完全离线安装步骤总结
- 这7件事情是影响程序员效率的关键
- JavaScript的万年历插件
- 如何使用 vimdiff 来 git diff /svn diff
- [swift学习之十四]计算属性和存储属性
- 微信支付之JSAPI公众号支付
- 解决get方法传递URL参数中文乱码问题
- WebService之CXF框架
- 数据库连接池