[C学习]函数,指针,数组

来源:互联网 发布:甲醛检测仪品牌 知乎 编辑:程序博客网 时间:2024/04/30 21:50

函数在编译的时候都有一个入口地址,函数也是有返回值的,就算是定义函数时没有写明函数返回值类型(C中默认为int也可认为是char).它也会返回一个不确定的值.如果限定不返回值,那么用void来表示没有返回值,它不给返回值分配内存地址,如果有对这个函数返回值的引用,那么编译会出现错误.

指针可以指向函数的入口地址,函数名类似于数组名,都是表明地址的.

1>函数指针:指向函数入口地址的指针,一经指定,那么可以用指针来调用函数.

形式:int (*p)();//必须写成()的形式,加()将*与名称绑定在一起,不然p会先与函数的参数结合,而变成返回值是指针的函数.

这是对函数指针的定义,赋值 p=max;//不要写成p=max();的形式,只是把首地址给p.而max就是函数的入口地址.

说明:

a>形式:数据类型 (* 指针变量名)()//这里的"数据类型"是函数的返回 值的类型

b>函数调用,可以用函数名调用,也可通过函数指针来调用.

c> XX (*p)()定义一个指向函数的指针变量,它不是固定指向哪 一个函数,而只是表示定义了这样的变量,它是专门用来存放函数入口地址的.在程序中把哪一个函数入口地址给它,它就指向哪一个函数.它可以先后指向返回值类型相同的不同函数.]

d>函数指针,如p+n,p++,p--等运算无意义.(不等同于指针常量,只是它只指各入口地址,地址计算指向的地址不确定.???函数存放的地址是连续的吗?)

2>返回指针的函数

形式:类型名 * 函数名(参数表列)

如:int *a(int x,int y){}//a是函数名,调用它以后能返回一个指向整型数据的指针.

注意:指针的级别,即它每移动一次,偏移量.(行,列)

////////////////////////////////////////////////////////////////////////////////////////

指针数组

1>数组里的元素全是指针,那么就是指针数组.那么这个数组名应该相当于一个2级指针,它指同数组的首地址,而这个地址里那是一个指针.一般用它来处理字符串,即字符串数组.

形式:类型* 数组名[];如:int * p[4];//表明数组中有4个元素,每一个元素都是指针,指向整型数据.

指向指针的指针

就是2级指针了,如果是字符串数组,那么数组名相当于2级指针了.可以是一个局部变量,用来对字符串数组进行操作,数组名不能进行自增等运算,而用一个2级指针指向它后,可用这个指针来进行地址的运算.

原创粉丝点击