深入理解C语言指针的奥秘9

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。

步骤/方法

  • 01

    如果有一个指针p,我们需要把它的类型和所指向的类型改为TYEP*TYPE, 那么语法格式是: (TYPE*)p; 这样强制类型转换的结果是一个新指针,该新指针的类型是TYPE*,它指向的类型是TYPE,它指向的地址就是原指针指向的地址。而原来的指针p的一切属性都没有被修改。 一个函数如果使用了指针作为形参,那么在函数调用语句的实参和形参的结合过程中,也会发生指针类型的转换。

  • 02

    例十五: voidfun(char*); inta=125,b; fun((char*)&a); ... ... voidfun(char*s) { charc; c=*(s+3);*(s+3)=*(s+0);*(s+0)=c; c=*(s+2);*(s+2)=*(s+1);*(s+1)=c; } }

  • 03

    注意这是一个32位程序,故int类型占了四个字节,char类型占一个字节。函数fun的作用是把一个整数的四个字节的顺序来个颠倒。注意到了吗?在函数调用语句中,实参&a的结果是一个指针,它的类型是int*,它指向的类型是int。

  • 04

    形参这个指针的类型是char*,它指向的类型是char。这样,在实参和形参的结合过程中,我们必须进行一次从int*类型到char*类型的转换。

  • 05

    结合这个例子,我们可以这样来想象编译器进行转换的过程:编译器先构造一个临时指针char*temp,然后执行temp=(char*)&a,最后再把temp的值传递给s。所以最后的结果是:s的类型是char*,它指向的类型是char,它指向的地址就是a的首地址。

(0)

相关推荐

  • 如何理解c语言中的指针

    我们在使用c语言进行编写程序的时候,就一定会使用上指针,指针的操作是编写程序的一个点. 如何更好的使用指针,将是我们进行更好的书写程序的关键. 这里,小编就分享一下自己在使用c语言编程过程中,对于指针 ...

  • C语言指针函数和函数指针详细介绍

    我们在学习C语言时,会学到指针函数和函数指针,有很多同学经常会搞混.今天,小编就来说说指针函数和函数指针到底是什么,有什么区别. 操作方法 01 指针函数通常是指函数返回值是指针的一类函数,如图所示. ...

  • 如何理解C语言中的特殊宏

    C语言中宏只是在C编译预处理阶段的一种文本替换工具,编译完成后,其对二进制代码是不可见的,这里我们将介绍几个比较特殊的宏,很常见但是又易忘记. 操作方法 01 x##y 该宏用法表示连接x和y,如果宏 ...

  • 如何建立设计语言系统

    引言 随着公司业务的飞速发展,产品线逐渐增多,跨部门的合作也越来越频繁,设计的统一性问题越发凸显.在这样的一个前提下,想要创造连贯一致的用户体验,其难度会随着人员的扩充而呈指数增长.所以,寻求一套简单 ...

  • gcc编译C语言程序

    对于初学c编程的同学来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对这门语言的理解很重要.只其然,知其所以然. 操作方法 01 编写c代码,并输入以下代码,生成文件hello.c [ ...

  • 从零开始学习C语言编程

    诞生于上世纪70年代的C语言是一门古老的语言了, 但作为一门底层语言,时至今日它仍然非常强大.学习C语言能够为学习其他更复杂的语言打下良好的基础,因为你在C语言中学习到的知识对几乎所有的编程语言都适用 ...

  • 如何学习C语言编程

    诞生于上世纪70年代的C语言是一门古老的语言了, 但作为一门底层语言,时至今日它仍然非常强大.学习C语言能够为学习其他更复杂的语言打下良好的基础,因为你在C语言中学习到的知识对几乎所有的编程语言都适用 ...

  • 如何学习一门编程语言

    选择一门语言 确定你感兴趣的领域 你可以开始学习任何编程语言(尽管其中一些被描述地比其他的更加"易学"),你得去问自己自己想用通过学习这门语言完成什么样的工作.这将会帮助你确定你应 ...

  • Arduino开发工具怎么用

    Arduino开发工具怎么用