黑马程序员 学习日记(二)-指针、函数
2014-04-25 11:47
197 查看
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
一、指针
1.指针是什么?
地址指向某个变量单元。我们将地址形象化的称为指针。
2.指针变量
一个变量中存储了指向另一个变量的地址,这个变量叫作指针变量。
例如:int *p;p=&i; p是个指针变量,之所以叫指针变量,其实只是p变量中存放特殊的内容(即变量i的地址)。我们用int *p;来声明p是个指针变量。
3.指针与数组名
数组名其实是指向数组首地址的指针常量。你可以通过int *p; int a[] = {1,2,3};p=a;来将数组首地址赋值到指针。并可以通过*p;*(p+n)来访问数组中
的元素。
4.指针常量与常量指针
int *const p=a;声明指针常量。p里面存储的内容,即p的值是不能修改的。const int *p = a;声明常量指针。p的值可以修改。但不能通过*p去修改a
的值。
5.指针与函数指针
函数名其实是指向函数入口的指针常量。我们可以通过void (*Fun)(int)来声明一个无返回值 ,具有一个整型参数的函数指针
void a(){}; void (*p)() ;p=&a;或者p=a;都可以通过*p();p();来调用a函数。
1)其实,a的函数名与p函数指针都是一样的,即都是函数指针。a数名是一个函数指针常量,而p是一个函数数指针变量,这是它们的关系。
2)但函数名调用如果都得如(*a)()这样,那书写与读起来都是不方便和不习惯的。所以C语言的设计者们才会设计成又可允许a()这种形式地调用。
3)为统一起见,p函数指针变量也可以p()的形式来调用。
4)赋值时,即可p = &a形式,也可p = a。
很值得注意的是指针数组和数组指针
指针数组用 int *p[];来定义。表示一个数组每个数组元素都是一个指针。
数组指针用 int (*p)[];来定义。表示一个指针指向一个元素个数为n的数组
指针数组这种定义方式其实只是定义了一个指针变量p。变量p指向了一个元素个数为n的数组。p是指向数组的 所以P的跨度是以数组为基本单位
的。比如p+1 +1表示一个数组但闻是在地址上增加了数组的总长度 例如int (*p)[5] p+1表示在地址上增加了20
可以参照char *p和int *p 的区别来区分。p在32位上都是占了4个字节。但是p指向的空间是大小是不一样的。
二、函数
任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。
一般来说,我们会将不同的功能交给不同的函数去实现。为了方便调用和区分这些函数,我们需要为每一个函数都起一个唯一的名称,函数的命名必须按照标识符命名规则
利用函数名就可以调用到对应的函数。
任何一个函数在使用之前都必须进行定义,定义函数的目的就是为了写清楚你这个函数是干啥用的,里面包含了哪些代码
函数的定义格式如下:
函数定义的注意
1.函数名不能重复
2.每一个函数都应该独立定义,不能嵌套定义
返回值类型 函数名(参数类型形式参数1,参数类型 形式参数2,…)
{
函数体
}
基本概念
形式参数:在定义函数时,函数名后面的小括号()中定义的变量称为形式参数,简称形参
实际参数:在调用函数时传入的值称为实际参数,简称实参
函数的形参和实参具有以下特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
因此在函数调用过程中,形参的值发生改变,而实参中的值不 会变化
5.和break,continue一样,在return后面不能写语句,因为执行不到。
返回值就是函数调用完后,返回给函数调用者的结果,用return关键字进行返回
定义函数时,要指明函数的返回值类型
一个函数可以没有返回值,如果没有返回值,应该用void表示返回值类型
如果一个函数没有返回值,最后面的return语句可以省略
如果一个函数没有明确写出返回值类型,那么代表这个函数的返回值类型是int
return的使用注意
1.return语句可以在函数内部返回一个值给函数调用者
2.一个函数内部可以多次使用return语句,使用了return语句后,函数就会马上停止执行,return语句后面的代码就不再被执行
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:www.itheima.com
一、指针
1.指针是什么?
地址指向某个变量单元。我们将地址形象化的称为指针。
2.指针变量
一个变量中存储了指向另一个变量的地址,这个变量叫作指针变量。
例如:int *p;p=&i; p是个指针变量,之所以叫指针变量,其实只是p变量中存放特殊的内容(即变量i的地址)。我们用int *p;来声明p是个指针变量。
3.指针与数组名
数组名其实是指向数组首地址的指针常量。你可以通过int *p; int a[] = {1,2,3};p=a;来将数组首地址赋值到指针。并可以通过*p;*(p+n)来访问数组中
的元素。
4.指针常量与常量指针
int *const p=a;声明指针常量。p里面存储的内容,即p的值是不能修改的。const int *p = a;声明常量指针。p的值可以修改。但不能通过*p去修改a
的值。
5.指针与函数指针
函数名其实是指向函数入口的指针常量。我们可以通过void (*Fun)(int)来声明一个无返回值 ,具有一个整型参数的函数指针
void a(){}; void (*p)() ;p=&a;或者p=a;都可以通过*p();p();来调用a函数。
1)其实,a的函数名与p函数指针都是一样的,即都是函数指针。a数名是一个函数指针常量,而p是一个函数数指针变量,这是它们的关系。
2)但函数名调用如果都得如(*a)()这样,那书写与读起来都是不方便和不习惯的。所以C语言的设计者们才会设计成又可允许a()这种形式地调用。
3)为统一起见,p函数指针变量也可以p()的形式来调用。
4)赋值时,即可p = &a形式,也可p = a。
很值得注意的是指针数组和数组指针
指针数组用 int *p[];来定义。表示一个数组每个数组元素都是一个指针。
数组指针用 int (*p)[];来定义。表示一个指针指向一个元素个数为n的数组
指针数组这种定义方式其实只是定义了一个指针变量p。变量p指向了一个元素个数为n的数组。p是指向数组的 所以P的跨度是以数组为基本单位
的。比如p+1 +1表示一个数组但闻是在地址上增加了数组的总长度 例如int (*p)[5] p+1表示在地址上增加了20
可以参照char *p和int *p 的区别来区分。p在32位上都是占了4个字节。但是p指向的空间是大小是不一样的。
二、函数
任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。
一般来说,我们会将不同的功能交给不同的函数去实现。为了方便调用和区分这些函数,我们需要为每一个函数都起一个唯一的名称,函数的命名必须按照标识符命名规则
利用函数名就可以调用到对应的函数。
任何一个函数在使用之前都必须进行定义,定义函数的目的就是为了写清楚你这个函数是干啥用的,里面包含了哪些代码
函数的定义格式如下:
函数定义的注意
1.函数名不能重复
2.每一个函数都应该独立定义,不能嵌套定义
返回值类型 函数名(参数类型形式参数1,参数类型 形式参数2,…)
{
函数体
}
基本概念
形式参数:在定义函数时,函数名后面的小括号()中定义的变量称为形式参数,简称形参
实际参数:在调用函数时传入的值称为实际参数,简称实参
函数的形参和实参具有以下特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
因此在函数调用过程中,形参的值发生改变,而实参中的值不 会变化
5.和break,continue一样,在return后面不能写语句,因为执行不到。
返回值就是函数调用完后,返回给函数调用者的结果,用return关键字进行返回
定义函数时,要指明函数的返回值类型
一个函数可以没有返回值,如果没有返回值,应该用void表示返回值类型
如果一个函数没有返回值,最后面的return语句可以省略
如果一个函数没有明确写出返回值类型,那么代表这个函数的返回值类型是int
return的使用注意
1.return语句可以在函数内部返回一个值给函数调用者
2.一个函数内部可以多次使用return语句,使用了return语句后,函数就会马上停止执行,return语句后面的代码就不再被执行
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:www.itheima.com
相关文章推荐
- 黑马程序员:OC学习日记之方法和函数
- 黑马程序员--IOS学习笔记(指针、返回指针的函数、指向函数的指针)
- 黑马程序员_学习日记37_601基础加强(enums_truct_类型转换_值类型与引用类型_异常处理_函数返回值)
- 黑马程序员-我的第六篇学习日记:OC方法的使用,对象方法与函数的区别
- 黑马程序员——零基础学习iOS开发——06 字符串、指针、指针和数组、指针和字符串、指针和函数
- 黑马程序员-[C语言-指针和文件操作]学习日记(四)
- 黑马程序员——C#学习日记之字符串处理函数
- 黑马程序员-我的第十二篇学习日记:OC中空指针,野指针,僵尸对象,retain和release基本使用
- 黑马程序员java学习日记——函数
- 黑马程序员java学习日记——函数
- 黑马程序员学习日记(8)--函数的ref、out参数和可变参数
- 函数指针学习笔记
- 黑马程序员java学习日记——数组
- 黑马程序员_JAVA学习日记_JAVA中网络编程
- 黑马程序员学习日记五
- 黑马程序员_学习日记6_C#基础归纳总结之堆栈分配图解
- c 函数及指针学习 7
- 2016年06月08日学习日记c语言指针
- 黑马程序员_学习日记29_winphone7开发_概述
- 黑马程序员_学习日记35_529基础加强(封装、继承、多态)