【C语言更新】C语言中如何来定义一个指针,并且对其进行初始化

文/Edward
再来说下函数参数传递的问题。在C语言中,每个变量被定义好之后(Auto类型定义),编译器便会在内存的栈区为它们开辟出来内存空间来存放这些变量。这些内存空间不管是连续的还是断续的,它们都会被分配不同的地址。而如果这些变量作为形式参数传入函数的时候,实际上仅仅是把变量里面存放的常数传递给函数,而函数内部的临时变量又是这个函数被初始化的时候创立的,和调用处的传递变量不是同一个,因此不管再怎么去改写形式参数里面传递进来的内容,本质上只是改变函数内部这些局部变量的内容。
函数的参数传递
指针从一开始被设计出来的时候,其目的不是用来存储某一个具体的常量或变量,它的目的只有一个,就是存放相应变量的地址,即这个变量的内存地址。我们定义完成一个变量之后,就可以将这个指针指向这个变量了。所谓指向某个变量,说直白点就是将这个变量的地址存入指针中。当我们在用指针作为数据交换函数的传递参数时,它其实传入的是这两个变量的地址,而在函数中我们在做这两个变量内容交换时,传递进入函数的指针变量的值是不会变的,还是存放最初的这两个变量的地址,但是当我们做交换操作时,就将原本存在地址A中的变量放入了地址B,将原本存放在B中的变量放入了地址A。
指针变量形式参数执行流程
所以说,我们在交换两个变量的内容时使用指针形式参数去传递参数,从现象上来看貌似是将两个形式参数的内容交换了,但是从本质上来看,指针形式参数的内容其实是没有任何变化的,变化的只是这两个指针所指向的内存中的内容进行了改变。理解了这个函数的指针形式参数,接下来的内容就很理解了。
指针的定义需要用到一个特殊的符号“*”,这个符号和运算符中的乘法运算符是同一个,以后在使用的时候需要注意。
这个“*”指针运算符在做指针运算的时候具有两种含义,我们先来讲述下在定义指针变量时的用法。指针变量的定义方式为:
数据类型 *指针变量名 = 初始化值;
如定义一个指针变量“a_pt”,让其指向int类型变量a。
根据上面所写的,定义一个名叫“a_pt”的指针变量很简单,但是首先要去确定定义的这个指针变量的数据类型,一般地,我们用这个指针变量指向什么类型的变量,就将其定义成那个相应的类型。这里我们所指向的变量是int类型的,因此将这个指针变量定义成int类型。
第二点需要注意的是如何将这个指针变量初始化的时候就指向变量a,前面我们说过,指针变量最终的目的就是用来存储变量的地址,因此只需要在指针变量“a_pt”初始化的时候,将变量a的地址赋给这个指针变量即可。那么如何获取变量a的地址呢?只需要在变量前面加“&”符号即可返回变量a的地址。我们可以写个简单的程序,先定义一个变量a,然后用“&”符号获取其地址,再将这个地址打印出来。
获取变量地址并打印
在我们顺利获取到变量地址之后,只需要将这个地址直接赋值给我们定义的指针变量即可。
指针变量的定义
我们定义了一个整形类型的指针,并且将其指向变量a。当然,根据我们指向对象的不同,我们还可以定义如char类型,long类型,float类型这些简单的数据类型指针,甚至还可以定义后面会学习的指针数组,结构体指针等复杂的数据类型指针。
(0)

相关推荐

  • C语言系列

    C语言系列_9:函数指针,函数指针数组和回调函数 原创快乐江湖啊2021-03-05 09:05:28 (5)函数指针 A:什么是函数指针 数组指针是指向数组的,函数指针就是指向函数的,也就是函数也是 ...

  • C语言的灵魂指针,什么是指针变量?

    C语言的灵魂指针,什么是指针变量? 原创2021-07-07 19:58·峰哥linux编程学堂 指针变量 学习了取地址运算符之后,我们可以使用取地址运算符取出一个变量的地址.例如: 编译结果如下: ...

  • C语言函数指针简单示例

    /* C语言函数指针简单示例 学习了数组之后,我们知道数组是在内存中申请一块内存空间:数组名代表内存块的首地址,通过数组名可以访问内存块中的数据. 那么,对于函数,它也是存放在内存块中的一段数据.例如 ...

  • 【C语言更新】结构体中实现函数成员以及回调函数

    文/Edward 前面说,结构体内部的成员变量可以是普通变量,数组,除了这些变量之外,还可以是指针,结构体,枚举,共用体等.综上所述的结构体内部成员中,我们可以发现一个结构体内部的成员竟然不包含函数. ...

  • 【C语言更新】C语言中字符串的操作

    文/Edward 在C语言的实际使用中,很多时候会去使用指针传递一些字符串,而C语言中也有很多关于字符串处理的库函数给大家来使用,只要在使用的时候包含头文件"string.h"就可 ...

  • 初学编程,如何玩转C语言?C语言中最重要的知识献上!

    一.C语言的指针 1.指针说明 指针是包含另一变量的地址变量. (1)int *p p是一个指针,指向一个整形数. (2)int *p() p是一个函数,该函数返回一个指向整数的指针. (3)int ...

  • R语言信用风险回归模型中交互作用的分析及可视化

    原文链接:http://tecdat.cn/?p=21892 引言 多元统计分析 中,交互作用是指某因素作用随其他因素水平的不同而不同,两因素同时存在是的作用不等于两因素单独作用之和(相加交互作用)或 ...

  • 比PyCharm还好用的Python编辑器Thonny (安装简单无需配置支持简体中文安装时会提示进行语言选择在菜单中也可以再次设置)

    https://m.toutiao.com/is/euoSGAH/ 对于刚刚开始学习Python的小白来说,直接安装一个软件无需配置,简简单单就可以开始编写并正常执行程序其实并不容易.就算他跟着书上的 ...

  • 【爱的五种语言】礼物(中韩双语)

    第六章      선물 ‍‍‍‍‍나는 여러 문화의 사랑이나 결혼 관습을 연구한 후, 선물을 주고받는 것이 사랑과 결혼의 중요한 부분임을 발견했다. ‍‍‍‍‍ NO.1 사랑의 증표   ...

  • 古代语言文化精华集锦:中华语典

    中华语典第一部分[运筹帷幄之中,决胜于千里之外]出自<史记高祖本纪>.意为:在营帐中操控着战略,就能让在千里之外作战的军队取得胜利第一章 国学精粹(1)第一章 国学精粹(2)第一章 国学精 ...

  • 将中式艺术语言完美融入水彩中,诗意与风骨——车秀成水彩作品欣赏

    今日推荐 | 第219期 画家车秀成 车秀成,男,1950年生,山东济南人.著名水彩画家,国家一级美术师.他的水彩画艺术得到中外画界的高度评价.画家的作品立意深邃,构图严谨,色调凄美,苍凉. 学习国画 ...

  • 别在语言的雾霾中迷失

    今天和学生一起分析语言得体,由教材而转入生活.教材中的材料包括谦敬得当.语体得当,要求表达要注意场合.对象,学生学得很认真,做了几个题目也很正确. 古人讲究礼仪,单单在称呼上就很下功夫.称呼自己的家人 ...