40篇学完C语言——(第四篇)【指针与地址】

前言

指针实的很复杂。和C语言中的其他变量一样,把指针看成一个变量 ,专门存储 place 的值就够了。

int a = 100;int* b = &a;

下面的代码很清晰,A是整型变量,值为100;b是指针变量,值是变量a的位置,变量和指针的例子必需反过来。

本文重点介绍若何通过利用指针变量来读写place中的值。

给…做注解

起首,假设一个场景:交换两个变量A和b的值,看上面的例子:

void swap(int x, int y){ int tmp = x; x = y; y = tmp; }void change(){ int a = 100; int b = 200; swap(a, b);}

成果A和B的值交换不胜利。原因是C序列在调用函数时利用了“按值调用”,象征着变量的值是从被调用的函数间接重构到被调整函数的自变量。“按值取用”是C语言中取用函数的奇特形式。

二。通过创建指针的姿势形式来处置上述功效。固然声明指针变量的体例略大,但指针只是一个连结变量位置的变量。指针很少按如下体例操做:

第一类:创建指针变量,“根底范式+*”。

int* iptr;char* cptr;double* dptr;

第二类:给指针变量赋值,“& amp+变量”。

int a = 100;char b = 'o';double c = 100.5;int* iptr;char* cptr;double* dptr;iptr = &a;cptr = &b;dptr = &c;

第三类:取保留指针变量的处所的值,“*+指针变量”。

int a = 100;int* iptr = &a;int b = *iptr;

因而,下面的代码被重写为:

void swap(int* x, int* y){ int tmp = *x; *x = *y; *y = tmp; }void change(){ int a = 100; int b = 200; swap(&a, &b);}

3.一个函数只能拜候它本身的仓库框架。但是,通过指针,一个函数能够间接读写另一个仓库框架中的变量值。 Value需要留意的是,函数之间的指针读写是无标的目的的。若是函数F1调用F2,F2能够读写F1中的变量值,反之亦然。很好理解。F2得到仓库帧时,先出仓库,出仓库后变量全没了。F1还会读写什么

摘要

其实指针其实不难。

您可以还会对下面的文章感兴趣:

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。