malloc,指针,throw的总结
2015-05-30 15:31
218 查看
1)关于malloc函数的笔记:
1、当一个程序另外需要一些内存时,它就调用malloc()函数,malloc从内存池中提取一块合适的内存,并向该程序返回一个指向这块内存的指针。这块内存此时并没有以任何方式进行初始化。(是指针指向的内存没有初始化,不是指针没有初始化。)
2、当一块以前分配的内存不再使用时,调用free函数把它归还给内存池以供以后之需。
3、malloc所分配的是一块连续的内存。
4、对每个从malloc返回的指针都进行检查,确保它并非NULL是非常重要的!!!!!
5、malloc与calloc之间的主要区别是后者在返回指向内存的指针之前把内存初始化为0(对于指针是NULL)。
2)关于指针的笔记:
1、所有的基本数据类型最终都被解释成一串二进制码,也就是说,当给定一串二进制码时,它可能被映射成int,也可能被映射成char,float,double等数据类型。
2、声明一个指针后,操作系统并不会为它分配空间。所以在访问指针前必须初始化。
3、如果知道指针被初始化为什么地址,就把它初始化为该地址,否则就把它初始化为NULL。风格良好的程序会在指针解引用之前对它进行检查,这种初始化策略可以减少大量的调试时间。
4、左值表示存储在计算机内存的对象,左值相当于地址值。右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值,右值相当于数据值。
5、&a只能做右值。
6、定义char *string;则表达式 *string++
执行过程:(1)++操作符产生string的一份拷贝(2)然后++操作符增加string的值(3)最后在string拷贝上执行间接访问操作。
这个表达式经常用在循环中 !note:++操作符优先级高于*
7、指针数组以一个NULL指针结束。
**8、**p为一个指针,p+1 (指针与整数加法)的结果与类型无关。若p为int,则p增加一个int即四个字节,若p为char,则p增加一个char即一个字节
3)throw:
如果出现了异常情况,我们可以把该异常抛出,这个时候的抛出的应该是异常的对象。
throws和throw的区别(面试题)
throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
源代码:
[java] view
plaincopy
public class Throws_Throw {
public static void main(String[] args) {
// method();//调用此方法没必要try-catch因为抛得是运行时期的异常
try {
method2();//调用此方法必须要try-catch因为抛得的编译器
} catch (Exception e) {
e.printStackTrace();
}
}
public static void method() {
int a = 10;
int b = 0;
if (b == 0) {
throw new ArithmeticException();
} else {
System.out.println(a / b);
}
}
public static void method2() throws Exception {
int a = 10;
int b = 0;
if (b == 0) {
throw new Exception();
} else {
System.out.println(a / b);
}
}
}
1、当一个程序另外需要一些内存时,它就调用malloc()函数,malloc从内存池中提取一块合适的内存,并向该程序返回一个指向这块内存的指针。这块内存此时并没有以任何方式进行初始化。(是指针指向的内存没有初始化,不是指针没有初始化。)
2、当一块以前分配的内存不再使用时,调用free函数把它归还给内存池以供以后之需。
3、malloc所分配的是一块连续的内存。
4、对每个从malloc返回的指针都进行检查,确保它并非NULL是非常重要的!!!!!
5、malloc与calloc之间的主要区别是后者在返回指向内存的指针之前把内存初始化为0(对于指针是NULL)。
2)关于指针的笔记:
1、所有的基本数据类型最终都被解释成一串二进制码,也就是说,当给定一串二进制码时,它可能被映射成int,也可能被映射成char,float,double等数据类型。
2、声明一个指针后,操作系统并不会为它分配空间。所以在访问指针前必须初始化。
3、如果知道指针被初始化为什么地址,就把它初始化为该地址,否则就把它初始化为NULL。风格良好的程序会在指针解引用之前对它进行检查,这种初始化策略可以减少大量的调试时间。
4、左值表示存储在计算机内存的对象,左值相当于地址值。右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值,右值相当于数据值。
5、&a只能做右值。
6、定义char *string;则表达式 *string++
执行过程:(1)++操作符产生string的一份拷贝(2)然后++操作符增加string的值(3)最后在string拷贝上执行间接访问操作。
这个表达式经常用在循环中 !note:++操作符优先级高于*
7、指针数组以一个NULL指针结束。
**8、**p为一个指针,p+1 (指针与整数加法)的结果与类型无关。若p为int,则p增加一个int即四个字节,若p为char,则p增加一个char即一个字节
3)throw:
如果出现了异常情况,我们可以把该异常抛出,这个时候的抛出的应该是异常的对象。
throws和throw的区别(面试题)
throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
源代码:
[java] view
plaincopy
public class Throws_Throw {
public static void main(String[] args) {
// method();//调用此方法没必要try-catch因为抛得是运行时期的异常
try {
method2();//调用此方法必须要try-catch因为抛得的编译器
} catch (Exception e) {
e.printStackTrace();
}
}
public static void method() {
int a = 10;
int b = 0;
if (b == 0) {
throw new ArithmeticException();
} else {
System.out.println(a / b);
}
}
public static void method2() throws Exception {
int a = 10;
int b = 0;
if (b == 0) {
throw new Exception();
} else {
System.out.println(a / b);
}
}
}
相关文章推荐
- Poj(2352)——Stars(树状数组)
- 支付宝手机网页即时到账接口(5)之交易接口页面跳转同步通知
- android开发环境
- 在Fragment之间切换,getActivity()为null的处理
- lambda表达式
- Android中Matrix的pre post set方法理解
- COJ 1002 WZJ的数据结构(二)(splay模板)
- javascript基础(第二天)
- ASP.NET MVC 必备开发环境
- ./scripts/feeds update -a OpenWrt大招系列
- import this
- Android字符串进阶之三:字体属性及测量(FontMetrics)
- 【l练习代码】有序二叉树的操作
- 将博客搬至CSDN
- 2W+汉字转拼音JS字库(UTF-8生僻字等通用无乱码)
- 微信运营笔记
- SQLite3 使用总结
- global全局变量
- glob获得目录下文件
- 面试题19:二叉树的镜像