栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

初学C语言的指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初学C语言的指针

  1. 指针的多种复杂类型

关于指针,我们需要根据各种类型来分析。

int p这是一个普通的整型变量
int *pp是一个返回整型数据的指针
int p[0]p是一个由整型数据组成的数组
int *p[0]p是一个由返回整型数据的指针所组成的数组
int (*p)[0]p是一个指向由整型数据组成的数组的指针
int **p二级指针
int p(int)函数的返回值是一个整型数据
int (*p)(int)p是一个指向有一个整型参数且返回类型为整型的函数的指针

了解这些指针就足够了。

1.2指针

详细了解指针主要需要搞清楚它的四个方面的内容

1.指针的类型

2.指针所指向的类型

3.指针的值

4.指针本身所占据的内存区

1.2.1指针的类型

有一个简便的方法,我们将声明语句中的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身具备的类型。

  1. int *ptr : 指针的类型是int *
  2. char *ptr :指针的类型是 char *
  3. int **ptr : 指针的类型是 int **
  4. int (*ptr)[3]: 指针的类型就是 int(*)[3]
  5. int *(*ptr)[3]: 指针的类型就是 int*(*)[3]
1.2.2指针所指向的类型

这个和大体上面相同,但是主要是要把声明变量前的*一起去掉。

  1. int *ptr :指针所指向的类型就是Int
  2. int **oto : 指针所指向的类型就是Int*

分清这两个的关系能对我们的指针掌握有具体的帮助。

1.2.3指针的值

      指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32 位程序里,所有类型的指针的值都是一个32 位整数,因为32 位程序里内存地址全都是32 位长。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX 为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。指针所指向的内存区和指针所指向的类型是两个完全不同的概念。在例一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向的内存区是不存在的,或者说是无意义的。

1.2.4指针本身所占据的内存区

直接使用sizeof()测一下就OK!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号