美文网首页
C语言重点—指针化难为易

C语言重点—指针化难为易

作者: 楚乔_0a40 | 来源:发表于2018-05-29 23:07 被阅读0次

    相信对于学习过C语言的人来说指针一直是一个难点。其实C语言也就只有这么一个难点,攻破了这个难点,要做的就是不断实践了,毕竟想好学好一门语言不实践是不行的。

    每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址,我们先了解什么是内存地址以及如何访问它。看下面的实例,它将输出定义的变量地址:

    当上面的代码被编译和执行时,它会产生下列结果:

    接下来让我们看看什么是指针吧!

    指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:

    type *name;

    这里的type 是指针的基类型,它必须是一个有效的 C 数据类型,name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。以下是有效的指针声明:

    所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。

    在此列出一些平常可能用到的指针例子

    小编推荐一个学C语言/C++的学习裙【 六四二,一二零,九一四 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

    接下来我们看下什么是函数指针

    一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。这种指针就是函数指针。

    函数指针的定义形式为:

    returnType (*pointerName)(param list);

    returnType 为函数返回值类型,pointerNmae 为指针名称,param list 为函数参数列表。

    注意:

    ( )的优先级高于*,第一个括号不能省略,如果写作returnType *pointerName(paramlist);

    就成了函数原型,它表明函数的返回值类型为returnType *。

    下面写一个简单的栗子:

    编译并运行结果如下:

    上面对msg函数进行了调用,fun_p是一个函数指针。

    总结:

    指针(Pointer)就是内存的地址,C语言允许用一个变量来存放指针,这种变量称为指针变量。指针变量可以存放基本类型数据的地址,也可以存放数组、函数以及其他指针变量的地址。

    常见的指针含义:

    相关文章

      网友评论

          本文标题:C语言重点—指针化难为易

          本文链接:https://www.haomeiwen.com/subject/afyzjftx.html