C语言-指针入门

指针被称为"C语言的灵魂"。实际上是一种专门用于保存内存地址的变量。

1.定义一个指针

在C语言中,我们使用形如int *p;的语句来声明一个指针,其中int可以替换成char,double等基础数据类型,跟在p前面的*表明p是一个指针类型的变量。但在程序编写过程中,这样仅声明指针却不进行初始化是非常危险的,这类指针通常被称为"野指针"。因此推荐在声明的同时便对指针进行初始化:

int i = 10;
int *p = &i;  // 用p保存i的内存地址

可能新学的同学看不大明白这两行代码,没关系,接下来便是对这两行代码的解释。

2.指针的基础使用

在学习指针基础使用之前我们最好能够了解一些关于计算机中内存预备知识。
在计算机中,内存在逻辑上会被划分为很多部分以方便CPU的访问。可以想象成所有数据住在一个名为"内存"的地方,而各个数据都待在各自"家"中,为了方便大家找到这些数据,每个数据存在的地方都有一个对应的地址(相当于门牌号)。
下面我们用一张图模拟一下在上述代码运行后i和p在内存中的分布情况:

上图中最左侧是变量p和i的内存地址,而矩形内便是变量的内存中实际存放的数据。显然,指针p的内存中存放的是i的内存地址。
同时,因为所有指针存放的都是内存地址,因此同一环境下所有指针的字长都是相同的(例如32位时字长为8,64位时字长为16)。

(1)取地址符&
在上文的指针初始化代码中,我们可以看到int* p = &i这部分代码,这句表达式的作用即是通过取地址符&将整形变量i的内存地址赋值给整形指针p。即上图中,在p对应内存中写入i的内存地址2000H。

(2)指向运算符*
在声明结束后,我们可以通过指向运算符*,以形如*p的方式,来读取指针所指向的内存地址中存放的内容(通常简称为指向的内容)。

我们通过两行代码看看&和*的用法:

printf("p = %d\n", p);  // 输出指针p的存放的内容(此处为i的内存地址)
printf("*p = %d\n", *p) // 输出指针p指向的内容 (即i在内存中的内容)

代码运行结果如下图:

原文地址:https://www.cnblogs.com/Bylight/p/10451598.html

时间: 2024-08-25 23:15:23

C语言-指针入门的相关文章

C语言快速入门系列(六)

C语言快速入门系列(五) C语言指针加强 本节引言: 上一节我们对C语言中的指针进行了初步的了解,学习了指针的定义,与普通变量 一维数组,二维数组,字符串之间的使用!在本节中我们将会学习一些新的知识点, 函数,结构体与共用体,枚举类型以及类型定义符typedef! 本节学习路线图: 本节正文 函数 ps:空函数就是什么都不做的函数,开发过程中不需要马上实现的,先写空函数!简单的空函数:void abc(){   } 结构体 共用体: 代码示例2: 建立一个共用体类型,当输入的时学生类型时,要求输

Swift语言高速入门

Swift语言高速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 2014年10月出版 定价:59.00元 428页 16开 编辑推荐 本书内容翔实,实例丰富,同步新版官方API文档和语法 语法|词法|框架覆盖全面,实战案例|配套习题丰富 多位Swift专家联合推荐,不仅是Swift入门书籍,也可做案头工具书 作者携手Swift专家在线答疑,方式例如以下: 1.专属勘误

C语言快速入门系列(五)

C语言快速入门系列(五) C语言指针初涉                                           ------转载请注明出处:coder-pig 本节引言: 上一节我们对C语言复合数据类型中的数组进行了解析,在本节中,我们会对C语言复合数据类型中的 重点,C语言的灵魂-----指针进行学习!使用指针的好处:利用指针可以表示与使用复杂的数据结构; 更加方便地使用我们的数组与字符串;可以像汇编语言一样直接处理内存单元地址;可以动态地进行内存空间 分配,C语言指针是重点,同

SQLite3 C语言API入门

下载SQLite3 我们下载sqlite源码包,只需要其中的sqlite3.c.sqlite.h即可. 最简单的一个创建表操作 #include <stdio.h>#include "sqlite3.h"int main(int argc,char *argv[]){    const char *sql_create_table="create table t(id int primary key,msg varchar(128))";    char

Swift语言快速入门

Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 2014年10月出版 定价:59.00元 428页 16开 编辑推荐 本书内容翔实,实例丰富,同步新版官方API文档和语法 语法|词法|框架覆盖全面,实战案例|配套习题丰富 多位Swift专家联合推荐,不仅是Swift入门书籍,也可做案头工具书 作者携手Swift专家在线答疑,方式如下: 1.专属勘误交流

C语言快速入门系列(九)

C语言快速入门系列(九)                                               ---转载请注明出处:coder-pig C语言知识点拾遗 本节引言: C语言系列已经接近尾声了,在前面八节的学习中,我们学会了C的基本语法,基本数据类型, 三种程序结构(顺序,判断,循环),数组,函数,指针,结构体,共用体,位运算,文件等内容, 本节将对前面没有讲的C的遗漏知识点进行补充,当然发现有那些的遗漏的知识点也会进行更新! 谢谢大家一直以来的支持,说了这么多的理论,缺的

C语言快速入门系列(七)

C语言快速入门系列(七) C语言指针进阶 本章引言: 在前面第5节中我们对C语言的指针进行了初步的学习理解;作为C语言的灵魂, C指针肯定没那么简单,在这一节中,我们将会对指针进行进一步的学习,比如二级指针, 指针数组,内存分配和const修饰指针常量等!下面就请大家跟随笔者的脚步,对 C指针神秘的一面进行进一步的解析吧! 本节学习路线图: 函数与指针: ①指针作为函数的形参: ②指向函数的指针: ③指针函数: ④带参数的主函数 ps:该代码的运行:先要编译生成exe文件后,来到exe所在文件目

IOS开发语言Swift入门连载---类和结构体

IOS开发语言Swift入门连载-类和结构体 类和结构体是人们构建代码所用的一种通用且灵活的构造体.为了在类和结构体中实现各种功能,我们必须要严格按照常量.变量以及函数所规定的语法规则来定义属性和添加方法. 与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意: 通常一个类 的实例被称为对象 .然而在Swift 中,类和结构体的关系要比在其他语言中更加的密切,本

C语言快速入门系列(二)

C语言快速入门系列(二) 本节引言: 在前面一节中我们对C语言进行了初步的了解,学会了使用IDE进行代码的编写,编译运行! 在这一节中我们会对C语言的基本语法进行进一步的学习! C语言是一门语言,可以和英语进行类比,英语句子 = 单词 + 语法 同样C语言的代码语句,也有着一套自己的规则! 废话不多说,直接正文! 本节学习路线图: 正文: 1.基本字符集 1.1 标识符 ①何为标识符:在C语言中,符号常量,变量,数组,函数等都需要一定的名称,我们把这种名称成为标识符 ②标识符的命名规则 答:只能