关于指针的一些总结
2016-05-26 12:27
288 查看
对于动态分配的内存在使用前一定要检验是否分配成功,在使用完成之后进行释放。
检验方法:int *p = (int *)malloc(10 * sizeof(int));
if (p == NULL)
{
printf("out of memory\n");
return 1;
}指针和数组的对比:
指针用来保存数据的地址,数组保存数据,数组名代表数组的首元素地址,&a才是整个数组的地址。
指针间接访问数据,数组直接访问数据,但其本质上都是数组名加上偏移地址。
指针用于动态数据结构,数组存储固定数目类型相同的元素。
指针使用malloc和free完成创建和释放,数组是隐式的。
指针通常指向匿名数据,数组自身是数组名。
数组指针是指向一个数组的指针。指针数组是是一个数组,里面的每一个元素都存放地址。
指针加一是加上指针所指向的类型。
讲一个数组指针强制类型转换再加一便不是加的是数组的大小,而是依据类型转换而定。
比如int (*p)[10] 转换成(int *)p+1 便是加4.
大小端存储:
11 22 33 44
大端存储为11 22 33 44
小端存储 44 33 22 11
判断方法:
(1) #include<stdio.h>
int main()
{
int a=1;
if(1==*(char*)&i)
{
printf("小端\n");
}
else printf("大端");
return 0;
}
(2)#include<stdio.h>
union un
{
int i;
char c;
}
int main()
{
union un un={0};
un.i=1;
if(un.c==1)
{
printf("小端\n")
}
else
printf("大端\n");
return 0;
}a[2][2]={(1,2),(3,4)}此种表达式为逗号表达式,真实内容为 2,4,0,0
二维数组的地址传递方式有俩中 1 二维数组的方式 2指针数组的数组名的方式
本文出自 “fun” 博客,请务必保留此出处http://10725723.blog.51cto.com/10715723/1716307
检验方法:int *p = (int *)malloc(10 * sizeof(int));
if (p == NULL)
{
printf("out of memory\n");
return 1;
}指针和数组的对比:
指针用来保存数据的地址,数组保存数据,数组名代表数组的首元素地址,&a才是整个数组的地址。
指针间接访问数据,数组直接访问数据,但其本质上都是数组名加上偏移地址。
指针用于动态数据结构,数组存储固定数目类型相同的元素。
指针使用malloc和free完成创建和释放,数组是隐式的。
指针通常指向匿名数据,数组自身是数组名。
数组指针是指向一个数组的指针。指针数组是是一个数组,里面的每一个元素都存放地址。
指针加一是加上指针所指向的类型。
讲一个数组指针强制类型转换再加一便不是加的是数组的大小,而是依据类型转换而定。
比如int (*p)[10] 转换成(int *)p+1 便是加4.
大小端存储:
11 22 33 44
大端存储为11 22 33 44
小端存储 44 33 22 11
判断方法:
(1) #include<stdio.h>
int main()
{
int a=1;
if(1==*(char*)&i)
{
printf("小端\n");
}
else printf("大端");
return 0;
}
(2)#include<stdio.h>
union un
{
int i;
char c;
}
int main()
{
union un un={0};
un.i=1;
if(un.c==1)
{
printf("小端\n")
}
else
printf("大端\n");
return 0;
}a[2][2]={(1,2),(3,4)}此种表达式为逗号表达式,真实内容为 2,4,0,0
二维数组的地址传递方式有俩中 1 二维数组的方式 2指针数组的数组名的方式
本文出自 “fun” 博客,请务必保留此出处http://10725723.blog.51cto.com/10715723/1716307
相关文章推荐
- 猜数字游戏
- 用c语言实现折半查找函数
- 括号匹配问题
- 编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。
- 二叉树-非平衡
- 用C语言打印一个菱形
- 将两个值进行交换的方法
- 二维数组的输出问题
- 一个函数返回参数二进制中 1 的个数
- 【WPF开发】无人机HUD (Head Up Display)开源控件
- 常见的Linux发行版
- MVC缓存
- [置顶] 【Linux】 find指令(文件查找)
- [置顶] 【数据结构】 二叉树
- [置顶] 【C语言】 字符串操作函数及内存拷贝函数归总
- [置顶] 【数据结构】 栈
- [置顶] 【数据结构】 一个数组实现两个栈【面试】
- [置顶] 【数据结构】 两个栈实现一个队列【面试】
- [置顶] 【数据结构】 出栈序列的合法性【面试】
- [置顶] 【C++】 斐波那契数列