指针

何为指针?来个官方定义:指针是一个值为内存地址的变量(或数据对象)。

一、指针的声明

 

//示例
int *pi; //pi是指向int类型变量的指针
char *pc; // pi是指向char类型变量的指针
float *pf; // pi是指向float类型变量的指针

注意,指针的值虽然是地址,指针本身也是有自己的地址和大小的。在计算机中,指针的大小为8字节,在stm32中,为4字节。

二、指针的赋值与解引用

int num=;
int *p;
p=#
printf("%d",*p);//结果输出为2

赋值要符合指针的定义,要向指针赋一个地址

三、指针的操作

int arr[]={,,,,};//数组名本身为一个指针

取址操作: &arr
自加自减,与整数相加减: arr++;  arr--;  arr+=2;  

            在本例中,指针与整数相加减时,它所指向的地址增加或减少整数个int的大小,如arr+=2储存ar[2]的地址

指针求差:相同类型指针之间可以相减,差值为整数个指针类型大小

四、指针与const

使用const可以保护数组的数据不被修改,相比于#define,const的用法更加灵活

const int days[]={,,};

此后数组的元素不能被修改,否则会报错

使用const的指针不能用于改变值

double rates[]={20.3,465.2,23.9,45.6,28.6};
const double *pd=rates;

之后便不能通过指针pd改变数组元素的值,但因为数组没有用const定义,所以可以用rates改变元素。

void show_arr (const double *p,int n);

如果函数这样定义,那这个函数将不能改变要传入的数组

最新文章

  1. 关于window.open()中文传值乱码问题的解决方法
  2. PAT 1028. 人口普查(20)
  3. 线程高级应用-心得7-java5线程并发库中阻塞队列Condition的应用及案例分析
  4. 动态修改 NodeJS 程序中的变量值
  5. 自定义Template,向其中添加新的panel
  6. Chrome远程调试Android上Chrome的页面
  7. 点点滴滴-ConfigurationManager.AppSettings
  8. 使用ThinkPHP的扩展功能
  9. Loadrunner11.0调用Jar包
  10. Halcon一日一练:图像拼接技术
  11. Elasticsearch 目录总结
  12. vue将指定区域的表格数据或element-ui中el-table的数据单笔或多笔批量导出excel
  13. [Swift]LeetCode233. 数字1的个数 | Number of Digit One
  14. python3学习笔记及常见问题
  15. js 小写金额转大写
  16. (map)水果 hdu1263
  17. 判断response.data是否为空
  18. UNITY2018开启deepprofiling
  19. ORA-00257错误的解决办法
  20. python16_day18【Django_Form表单、分页】

热门文章

  1. 图形报表部署在Linux下出现乱码解决办法
  2. Android微信支付SDK开发
  3. Eclipse 下载、安装、取消自动更新、设置编码、关联Tomcat
  4. ORACLE AUDIT 审计
  5. Windows 安装 python MySQLdb模块
  6. Oracle案例12——NBU Oracle恢复
  7. 关于springMVC的一些常用注解
  8. 简易使用UILabel的富文本
  9. like a virgin
  10. 内置函数 sorted