指针

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

一、指针的声明

 

//示例
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);

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

飞控入门之C语言指针回顾的更多相关文章

  1. 飞控入门之C语言结构体、枚举

    结构体 先来说明一下,结构体存在的意义.比如说有一只猫,要在C语言程序中综合描述它,那么可以这样说,它的体重是float类型的,颜色是char类型的,它的一些食物名字是一个数组,那么如果分开定义这些变 ...

  2. 01_什么是数据结构以及C语言指针回顾

    一.数据结构是什么 如何把现实中大量而复杂的问题,以特定的数据类型和特定的数据存储结构保存到计算机的存储器中. 数据存储包括两方面:个体存储的集合.个体与个体之间的关系的存储 程序 = 算法 + 数据 ...

  3. C语言指针入门知识

    C语言指针往往是C语言学习过程中最困难的地方, 最近重新理解了一下C语言的指针知识, 在此整理一下, 如果有错误请留言指正. 对于刚入门的人来说, 指针涉及方方面面, 从简单的数组到结构体, 都会用到 ...

  4. C语言入门---第九章 C语言指针

    没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. ===== ...

  5. 关于C语言指针的一些新认识(1)

    Technorati 标签: 指针,数组,汇编,C语言 前言 指针是C语言的精华,但我对它一直有种敬而远之的感觉,因为一个不小心就可能让你的程序陷入莫名其妙的麻烦之中.所以,在处理字符串时,我总是能用 ...

  6. C、C++、Java到Python,编程入门学习什么语言好?

    摘要:回顾编程语言几十年来的兴衰起伏,似乎也折射了整个信息产业的变迁消亡,想要在技术的洪流里激流勇进,找准并学精一两门编程语言更加显得至关重要. 最近,TIOBE更新了7月的编程语言榜单,常年霸榜的C ...

  7. C语言指针转换为intptr_t类型

    1.前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量.由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针.感觉很奇怪,为何要将一个指针 ...

  8. [转]C语言指针学习经验总结浅谈

    指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...

  9. 不可或缺 Windows Native (7) - C 语言: 指针

    [源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...

随机推荐

  1. 一种特殊场景下的HASH JOIN的优化为NEST LOOP.

    应用场景: 有如下的SQL: select t.*, t1.ownerfrom t, t1where t.id=t1.id; 表t ,t1的数据量比较大,比如200W行.但是两张表能关联的行数却很少, ...

  2. spring多线程初探

    6月14号  晴  最高温度37   今天很热的一天啊,开发的任务现在正在测试阶段,手头没有什么工作任务,忙里偷闲,丰富一下我的blog. 前两天有个需求:调用第三方接口,这个接口的响应时间有点长,需 ...

  3. select2加载远程数据示例

    核心js $("#query_pack_code").select2({ language: "zh-CN", allowClear: true, width: ...

  4. WEBserver 性能测试

    本地实验(Centos7),WEBserver性能测试; 软件包地址 wget http://download.joedog.org/siege/siege-4.0.2.tar.gztar -xf s ...

  5. git 代码上传至远程仓库&从远程库克隆到本地

    1.下载安装Git.下载:https://git-scm.com/downloads  安装:可参考文章http://blog.csdn.net/zzfenglin/article/details/5 ...

  6. Redis学习---CentOs/RedHat下Redis的安装

    redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境.      安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gc ...

  7. java 规范

    https://blog.csdn.net/mengxiangsun/article/details/79020226

  8. 17级-车辆工程-周金霖 计算机作业 MP4音乐网站

  9. jQuery Ajax url使用方式

    jQuery Ajax的使用场景: 页面需要通过后台逻辑,但只需要局部刷新以显示新的内容. jQuery Ajax url使用方式1.servlet方式: 需要在struts.xml中写一个actio ...

  10. 三元运算符 c = a if a>b else b

    def my(a,b): c = a if a>b else b return c d = my(1,12)print(d)