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

C语言中关于指针的深层解读

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

C语言中关于指针的深层解读

指针定义
int *p;//p是变量的名字,int*表示p变量存放的是int类型变量的地址
p=&i;//p保存了i的地址,因此p指向i

如果一个指针变量指向了某个普通变量,则(*指针变量)就完全等于(普通变量)

例:

p指向普通变量;

在所有出现*p的地方都可以替换成i

在所有出现i的地方都可以换成*p

指针就是地址,地址就是内存单元的编号。

指针的实质就是一个操作受限的非负整数

*的含义

1.乘法

2.定义指针变量        int *p;

3.指针运算符        //如果p是一个已经定义好的指针变量,*p表示以p的内容为地址的变量

指针和一维数组 一维数组名

一维数组名是个指针变量

他存放的是一维数组第一个元素的地址

int a[5];//a是数组名,5是数组元素的个数

函数确定一维数组需要两个信息,数组首地址和数组元素个数。

pArr[3]<=>*(pArr+3)        //3是下标

a[3]<=>*(a+3)        //3是下标

下标和指针的关系

如果p是个指针变量,则p[i]永远等价于*(p+i)

指针变量不能相加,不能相乘,不能相除。

如果两个指针变量指向的是同一块连续空间中的不同存储单元,则这两个指针变量才可以相减。

动态内存分配 静态数组

传统形式定义的数组,该函数运行时,其空间会一直存在,直到函数运行结束时,数组空间才被释放。

传统数组也叫静态数组。

动态内存构造
int i=5;//分配了4个字节,静态分配。
int *p=(int*)malloc(4);//p本身的内存只能在p变量所在函数运行终止时由系统自动释放。

int *pArr=(int*)malloc(4*len);//类似于int pArr[len]

函数运行结束,自动释放静态内存。

静态变量不能跨函数使用,动态内存可以跨函数使用。

 

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

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

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