这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » C语言学习笔记(指针)

共20条 1/2 1 2 跳转至

C语言学习笔记(指针)

高工
2012-12-11 23:19:22     打赏

指针是C语言的一个重要概念,正确而灵活的应用它,可以有效的表示复杂的数据结构,能动态分配内存,能方便的使用字符串,有效而方便的使用数组,在调用函数是能得到多于一个的值,能直接处理内存地址等。每一个学习和使用C语言的人,都应当深入的学习和掌握指针。
1、 地址和指针的概念(区分指针(地址)和指针变量)
内存中的每一个字节有一个编号,这就是“地址”。在程序中一般是通过变量名;来对内存单元进行存取操作的。因此在C语言中,将地址形象化的称之为“指针”。一个变量的地址成为该变量的指针,如果有一个变量专门来存放另一个变量的地址,则称她为“指针变量“。。指针变量的值(即指针变量中存放的值)是指针(地址)。
2、 变量的指针和指向变量的指针变量
变量的指针就是变量的地址,存放变量的地址的变量是指针变量,用来指向;另外一个变量。在程序中用“*”来表示指向。
2.1定义一个指针变量
C语言中所有的变量在使用前必须定义,指定其类型,并按此分配内存单元。
定义指针类型变量 例: 基类型 *指针变量名 ; int *point ;
使一个指针变量指向另一个变量: int *point=&a;
注意:1指针变量前面的*表示该变量的类型为指针型变量。变量名为point; 2在定义指针变量是必须指定基类型。牵扯到指针的运算。(整型与实型移动的字节数不同);指针变量可以指向的变量的类型。
2.2指针变量的引用
请牢记,指针变量只能存放地址(指针),不要将一个整型变量赋给一个指针变量。
例:(*point_1)++相当于a++. *point++:*与++为同一优先级,自右至左结合,
相当于*(point++)。
2.3 指针变量作为函数参数
注意(运用指针的)值传递(实参值发生改变)和“单向的”“值传递”(形参值的改变传不回实参,即形参改变实参不改变)
为了时在函数中改变了的变量值能被main函数所用,不能采取把要改变值得变量作为参数,而应该指针变量作为函数的参数,在函数执行过程中是指针变量所指的变量值发生改变,函数调用结束后,这些变量值得变化依然保留下来。这样就是想了:通过调用函数是变量的值发生变化,在主调函数中使用这些变化了的值。的目的。
Swap(int *p1,int *p2){int *p;p=p1;p1=p2;p2=p;}这样是不能够返回改变了的值的,即实参值未被改变。Swap(int*p1 int *p2){int*p;*p=*P1;*p1=*p2;*p2=*p}此函数可以返回别形参改变了的值,使北调函数可以使用改了的值。运用指针变量做参数,可以得到多个变化了的值。
3、 数组与指针
所谓数组元素的指针就是数组元素的地址。使用指针法能使目标程序质量提高(占内存少,运行速度快)。
3.1 指向数组元素的指针
C语言规定数组名代表数组中第一个元素的地址。
引用一个数组元素,可以用1 下标法,如a[i]形式。2 指针法,如*(a+i)或*(p+i);
数组名是数组首元素的地址,他是一个指针常量,它的值在程序运行期间是固定不变的。
要注意指针变量的当前值。
3.2用数组名做函数参数
数组名代表数组首元素的地址,唯一地址常量。
用变量名作函数参数时,属于值传递。不影响变量的地址未被改变,所以原实参变量不变。
用数组名做函数参数时,传递的是值的地址,形参变量和是参变量占用的是同一段内存单元,
地址改变了,所以原参数也发生了变化,可以实现通过调用一个函数来改变实参的值。
4字符串与指针
4.1字符串的表示形式
1 用字符数组存放字符串 2 用字符指针指向一个字符串char *string=”I LOVE CHAIN !”
Sting为字符型指针常量,它代表字符串的首字符的地址。
5 指向函数的指针
一个函数在编译时被分配给一个入口地址。这个入口地址就成为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。(每一个函数都占用一段内存单元,他们有一个起始地址)例:main(){int max(int,int);int (*p)(); int a,b,c; p=max; c=(*p)(a,b); }
1 指向函数的指针变量的定义形式
数据类型 (*变量名)(); 这里的数据类型为返回类型。
2(*P)()表示定义了一个指向函数的指针变量,他不是固定指向哪一个函数,指标是定义了这样一个类型的变量。
3 再给函数指针变量赋值时,只需给出函数名,不必带参数,因为它仅表示函数入口地址。
4 函数调用时,只需(*p)代替函数名即可[(*p)代替max].
5对函数的指针变量的运算是没意义的。




关键词: 语言学习     笔记     指针     一个     数组     函数     地址     变量    

专家
2012-12-12 08:09:01     打赏
2楼
学习了,最好是给个实例!

专家
2012-12-12 10:38:13     打赏
3楼
C语言中,指针是最关键的也是最不好理解的!

高工
2012-12-12 11:48:16     打赏
4楼
是啊,太灵活啦,所以时不时翻来看看

高工
2012-12-12 11:49:06     打赏
5楼
改天时间充足了吧,哈哈

高工
2012-12-12 14:56:29     打赏
6楼
指针就是地址,灵活运用指针会给编程带来很多的方便

高工
2012-12-12 16:08:59     打赏
7楼
达到灵活的水平还需日积月累啊

高工
2012-12-12 20:24:47     打赏
8楼

这个C语言学习笔记写的不错哦


高工
2012-12-12 22:30:54     打赏
9楼
记不起来了就翻翻看呗,知识总是用的时候才觉得少啊

高工
2012-12-13 10:52:00     打赏
10楼
编程还是很讲究经验的

共20条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]