C语言学习:指针(笔记)

来源:互联网 发布:会计师事务所待遇 知乎 编辑:程序博客网 时间:2024/05/12 02:15

1、C程序设计中使用指针的好处:

  • 使程序简洁、紧凑、高效;
  • 有效地表示复杂的数据结构;
  • 动态分配内存;
  • 得到多于一个的函数返回值。

2、内存中每个字节都有自己唯一的编号————内存地址;

  • 在程序中声明一个变量,如int
    i;在程序被编译或者函数被调用时,为这个变量分配相应的内存单元,即分配多少个字节的长度的内存单元。变量就是对程序中数据存储空间的抽象。

  • 换句话说———内存相当于高楼大厦,每个房间(相当于内存单元)都有自己唯一的门牌号(即内存地址)。现在根据需要将1-4号房间,分配给大山使用,则这1-4号房间就叫做大山的房间,相当于int i;中的i ,而为i分配的内存单元由操作系统决定大小,木有操作系统,就由处理器决定。

3、存储单元、内存地址及指针

  • 指针就是储存单元的地址。
  • 一个变量的指针就是该变量在内存中的存储单元的地址。
  • 存取变量中的数据有两种引用方式:

      直接引用:按变量名称存取变量的值。  间接引用:将其变量的指针即该变量的内存地址,放在另一个新的变量中,则现在这个新的变量中存储的值就是原来变量的内存地址值,现在对新变量进行操作,就相当于根据原变量内存地址,对原变量进行存取操作!

4、指针变量

  • 指针:一个内存的地址。直接就是内存地址
  • 指针变量:专门存放地址的变量。将变量的内存地址存入指针变量,则该指针变量的地址即指针就直接指向原变量的值。

4.1 变量的指针和指向变量的指针变量

  • 变量的指针:就是变量的内存地址
  • 指向变量的指针变量:就是存放变量内存地址的变量。

    其中,用*表示指针变量所指向的对象。
    如:指针变量pa指向变量a。则*pa就表示pa的对象,即变量a。(此时*pa与a为同一个变量)

  • 指针:就是变量的地址。

  • 指针变量:是可以存放指针的变量。
  • 指针类型:由变量的类型决定。

    例:指针变量pa指向变量a,即表示变量pa中存放着变量a的内存地址。
    若 pa = &a; 则此时 *pa 与 a 是等价的。

4.2 指针变量的定义与初始化

4.2.1. 指针变量的定义
一般形式:数据类型 *指针名;

例:

     int *p1,*p2;     float   *q ;     static  char  *name;/*注意:1、int *p1,p2与 int *p1,p2不同,每个指针变量前都有一个*;2、指针变量名是p1,p2,不是*p1,*p2;3、指针变量只能指向定义时所规定类型的变量;int *p,a; char c; float x;  p只能指向a,不能指向c或x。*/

4.2.2 指针变量的初始化
一般形式: 数据类型 *指针名=初始地址值;

int i;int *p = &i;//注意:变量i必须在定义该指针*p变量前,已经定义,并且指针变量类型与变量i的类型一致
int i;int *p=&i;int *q=p;//可以用已经初始化过的指针变量作初值。
int i;static int *p=&i;//这是错误的,不能用auto变量的地址去初始化static型指针

4.2.3 指针变量的引用

  • i_pointer—–指针变量,它的内容是地址量
  • *i_pointer—-指针的目标变量,它的内容是数据
  • &i_pointer—指针变量占用内存的地址

5、指针与函数
5.1 指针作为函数的参数 ——-地址传递
好处:共享内存,“双向”传递

传地址的特点:

  • 实参可以是变量、常量或表达式,其实参值是指针数据类型。
  • 在被调用函数中,可以通过地址间接访问主调函数中的变量,而达到改变主调函数的变量值。

6、指针与一维数组

[] 变址运算符
a[i]  *(a+i)
即 a[0] <=> *a
·········
a[5] <=> *(a+5)

7、关于数组名作为函数参数
数组名作为函数的参数,实质上是指针作为函数的参数

数组名作为函数参数,实参与形参的对应关系
实参是数组名或指针变量,对应的形参可以是数组名或指针变量

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吼完孩子觉得很害怕怎么办 小朋友在幼儿园被欺负怎么办 老师总找孩子茬怎么办 小孩说幼儿园老师不喜欢她怎么办 小孩在学校老师不喜欢怎么办 好哭的孩子老师怎么办 小孩哭的犟住怎么办 2-3小孩脾气很犟怎么办 生了孩子没奶怎么办 二年级孩子写作业慢怎么办 六年级下册数学解决问题差的怎么办 孩子五年级了学习成绩不好怎么办 孩子做错事不承认怎么办 二年级小孩拼音差怎么办 小学三年级数学60多分怎么办 孩子三年级了数学不开窍怎么办 初二数学太差该怎么办 孩子语文阅读理解能力差怎么办 5年级数学不开窍怎么办 一年级孩子数学不开窍怎么办 三年级孩子数学成绩差怎么办 孩子三年级数学太差怎么办 三年级孩子数学理解能力差怎么办 教小孩做作业老是发火怎么办 孩子拿笔重写字太黑怎么办 教小孩写不到汉字怎么办 一年级孩子数学理解能力差怎么办 小孩一年级数学学不好怎么办 孩子一年级数学学不好怎么办 小学一年级数学学不好怎么办 孩子一年级数学成绩不好怎么办 成绩差的孩子该怎么办 面对成绩差的孩子该怎么办 六年级数学成绩差该怎么办 孩子数学物理成绩差该怎么办 高三成绩很差该怎么办 孩子学习成绩差家长该怎么办 孩子一年级语文成绩不好怎么办 孩子上网成瘾不听父母话怎么办 10岁数学不开窍怎么办 孩子五年级数学不好怎么办