当前位置:主页 > 行业新闻 >

C语言学习笔记(6)

发布时间:19-12-06 阅读:223

1. 指针的滥觞

在现代,大年夜多半的今世谋略机都邑把内存瓜分成字节,每个字节都有着其独一的地址。可履行法度榜样由代码和数据两部分构成,而法度榜样中的每个变量都占领着一个或多个字节,也便是说,每个变量都有着自己的地址。而这个便是指针的滥觞。

着实每个地址便是一个数,然则我们却不能用数来表示地址,存储地址,我们必要用指针变量。例如int *p = i,我们就可以说p是指针变量,存储着变量i的地址。

那么我们说int *p中,p便是指向int 类型工具的指针变量。

2. 取址运算符和间接寻址运算符

&,取址运算符,假如x是变量,那么&x便是变量x所在的地址。

*,间接寻址运算符,假如p是指针变量,*p就代表p所指向的变量的值。

当我们在法度榜样中声明int *p时,着实并没有让p指向任何地址,只是一个空指针,我们也称之为悬浮指针,在法度榜样中,我们应该只管即便避免这样的状况,应该只管即便当声明的同时进行初始化。否则当往后不小心对*p进行赋值时,假如p正好指向了某一块系统内存地址,就会造成系统的崩溃。

着实我们第一次打仗取址运算符,应该是利用于scanf,现在我们来想想scanf(“%d”,&a)的含义,着实便是奉告scanf函数,要把读取的值放到哪个地址的下面。

3. const保护参数

我们之前说过const代表常量,不容许改变,那么我们也可以将const利用于指针参数上。例如:

void Test(const int *p)就代表*p是弗成以改变的,意思也便是p所指向的整数不能被改变。

void Test(int * const p)则代表,p是弗成以被改变的,也便是说p只能指向这一块地址。

void Test(const int * const p)则代表,p只可以指向这一块地址,并且这一块地址的数据不能被改变。

4.指针作为返回值

这里我只提一点,不要反悔局部变量的指针变量,由于局部变量出了感化域顿时被收受接收,这时,该指针也就指向了一块废弃的地址。

当然,我们可以返回某些参数的地址,外部变量和静态变量的地址。总之,要确保该指针指向的是一块未经收受接收的地址即可。



上一篇:泡苦瓜片喝有什么好处?苦瓜的药用价值
下一篇:蔡不认台商汇回金额零元 蓝委批:死不认错