当前位置: 首页 > article >正文

C使用指针注意事项(学习笔记)

一、数组使用指针
1、数组名是数组元素首地址。
2、只有在函数原型或函数定义头中,才可以用int arr[]代替int * arr

int sum(int * arr,int n);
int sum(int arr[],int n);//等效

3、一个整形数组表名处理元素的个数有2种方式

/*方式1*/int sum(int * arr,int n);
/*方式2*/int sum(int * start,int * end);

4、arr[i]和*(arr+i)是等价的
二、指针操作
1、赋值:可以把指针赋给指针;
2、解引用:*运算符给出指针指向地址上存储的值;
3、取址:和所有变量一样,指针变量也有自己的地址和值;
4、指针与整数相加:可以使用+运算符把指针与整数相加,或整数与指针相加。整数会和指针所指向类型的大小(以字节为单位)相乘,然后把结果与初始地址相加;
5、递增指针:递增指向数组元素的指针可以让指针移动至数组的下一个元素;
6、指针减去一个整数:可以使用-运算符把指针与整数相-,不可以整数减指针。整数会和指针所指向类型的大小(以字节为单位)相乘,然后初始地址减去乘积;
7、递减指针:与递增类似;
8、指针求差:通过用于两个指向同一数组不同元素的指针,通过求差计算出两元素之间的距离;
9、比较:指向相同类型的指针才可以比较。
三、注意事项
1、千万不要解引用未初始化的指针。创建一个指针时系统只分配了存储指针本身的内存,并未分配存储数据的内存。因此,在使用指针之前,必须先用已分配的地址初始化它。

int * pt;//未初始化的指针
*pt = 5;//致命错误

http://www.kler.cn/a/105021.html

相关文章:

  • Angular-01:基本架构
  • linux中断下文之tasklet(中断二)
  • [C#基础训练]FoodRobot食品管理部分代码
  • UI 自动化测试框架:PO模式+数据驱动
  • Redis数据类型
  • vueDay03——可灵活变动的class样式
  • 不希望你的数据在云中?关闭iPhone或Mac上的iCloud
  • 对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中的所有值为x的数据元素
  • 启动内核ip转发和其他优化
  • 深入探究Selenium定位技巧及最佳实践
  • 完美解决configure: error: APR not found. Please read the documentation.
  • threejs(6)-操控物体实现家居编辑器
  • AD9371 官方例程HDL详解之JESD204B TX侧时钟生成 (一)
  • 【Qt样式(qss)-5】qss局部渲染混乱,错乱,不生效的一种原因
  • 【Linux】线程同步
  • ShardingSphere-JDBC分库分表快速入门实战
  • 【Spring Boot系列】- Spring Boot事务应用详解
  • Jupyter使用技巧-环境篇
  • ES 11 新特性
  • FPGA从入门到精通(二十)SignalTapII