嵌入式C语言 指针 随堂笔记

指针也是一种变量,是用来存放地址的。

可以间接操作变量,

NULL空地址和0是等价的

在程序执行过程中可以指向任意地址

指针变量的命名规则和其他变量的命名规则一样
指针不能与现有变量同名
指针可存放 C 语言中的任何基本数据类型、数组和其他所有高级数据结构的地址
若指针已声明为指向某种类型数据的地址,则它不能用于存储其他类型数据的地址
应为指针指定一个地址后,才能在语句中使用指针
指针是一个变量,可以在程序执行过程中改变它的值,即可以改变指针的指向。可以在某时刻指向变量x,也可以在另一时刻指向变量y

指针不初始化的危害;

初始化是指定义并赋值

#include<stdio.h>
   int main()
   {
       int *pa;//野指针
   printf("pa=%p\n",pa);
   printf("*pa=%d\n",*pa);
//段错误:操作了非法的内存

*pa+=10;

return 0;
   }

指针变量所占内存地址都是4个字节

指针的运算;

1.指针和指针

#include<stdio.h>
  int main()
  {
     int a=12;
       int b=34;
       int *pa=&a;
      int *pb=&b;
      int c=pa+pb;
       return 0;
  }
~   

两个地址相加没有意义 error

把int c=pa+pb换成int c=pa-pb不会报错。因为int c=pa-pb是表示2个地址的距离,是有意义的。

2.指针和整数的加和减就是地址的偏移

偏移量=n*sizeof(type)

&arr  :整个数组的首地址  偏移量 5*sizeof(int)

&arr+1  VS  &(arr+1)

&(arr+1)是不成立的,不能取地址的地址

指针与数组的等价关系

如果int  *p=arr则

pa 等价于 &arr[i]

*pa 等价于   arr[0]

int *pa 存放 int 或int[]

时间: 2024-12-17 01:59:39

嵌入式C语言 指针 随堂笔记的相关文章

相克军_Oracle体系_随堂笔记013-字符集

linux环境下: [[email protected] ~]# locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" …… windows环境下: C:\Users\Martin>chcp 活动代码页: 936 字符集其实就是“字符”和“编码”的一张对照表, 数据库安装过程中,会选择确认下面两个字符集: 1.数据库字符集:数据库需要存储多国语言选择AL32UTF8,只有中英文选择ZHS16GBK 2.国家字符集 一般都选用AL16UTF1

嵌入式C语言常用关键字

1.static关键字 这个关键字前面也有提到,它的作用是强大的. 要对static关键字深入了解,首先需要掌握标准C程序的组成. 标准C程序一直由下列部分组成: 1)正文段--CPU执行的机器指令部分,也就是你的程序.一个程序只有一个副本:只读,这是为了防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)--在程序中所有赋了初值的全局变量,存放在这里. 3)非初始化数据段(bss段)--在程序中没有初始化的全局变量:内核将此段初始化为0. 注意:只有全局变量被分配到数据段中. 4)

嵌入式C语言全套视频教程云盘下载!

了解过嵌入式开发的朋友们都有一定的了解,语言是学习嵌入式开发必须具备的工具语言,学好C语言基础可以更好的学习嵌入式开发.今天在这里给大家分享一个嵌入式C语言全套视频教程,需要的朋友可以下载来看看! 课程目录部分截图: 百度云盘下载:http://pan.baidu.com/s/1c1OETIo 密码:cgcj

C语言指针

C语言指针 指针是什么? 指针也是一个变量,但是这个变量存储的是一个地址,指向一个存储单元.我们可以根据指针(地址)找到他所指的变量,并对这个变量进行操作(赋值等).通过C里面的取地址符号&和取所指内容的符号*可以很方便的表示指针以及指针所指的变量之间的关系 /* ============================================================================ Name C语言指针 : text.c Author : Version : C

相克军_Oracle体系_随堂笔记016-参数文件及数据库的启动和关闭

参数文件: spfile<SID>.ora    动态参数文件,是二进制文件,9i以后引入并建议使用 init<SID>.ora    静态参数文件,是文本文件 动态参数,部分参数可以动态修改.建议9i以后就使用spfile. 数据库启动三个阶段: nomount(根据参数文件配置参数启动实例) mount(根据参数文件中记录的控制文件位置打开控制文件) open(根据控制文件信息打开数据文件,redo日志文件,open数据库) 注:nomount之前就可以根据pfile创建spf

相克军_Oracle体系_随堂笔记010-SCN

1.SCN的意义?system change number 时间    先后.新旧 select dbms_flashback.get_system_change_number, SCN_TO_TIMESTAMP(dbms_flashback.get_system_change_number) from dual; SCN号,为了保证数据的一致性: 2.常见的SCN  2.1控制文件的三个SCN        系统SCN select checkpoint_change# from v$data

相克军_Oracle体系_随堂笔记003-体系概述

1.进程结构图 对Oracle生产库来讲,服务器进程(可以简单理解是前台进程)的数量远远大于后台进程.因为一个用户进程对应了一个服务器进程. 而且后台进程一般出问题几率不大,所以学习重点也是服务器进程和PGA的关系(容易出问题). 2.Oracle 实例管理 6大共享池,5大后台进程,3大文件 控制文件:记录了各文件存放的位置以及当前的运行状态: 数据文件:存放数据: 重做日志文件:对数据文件所有的修改记录: 补充知识点: (1)实际生产环境中可以多个实例(一般是2个,4个,8个)对应一个数据库

C语言--指针(一)

#import <Foundation/Foundation.h> //交换函数 void swap(int x, int y) { printf("x=%d,y=%d",x,y); int temp = 0; temp = x; x = y; y = temp; printf("x=%d,y=%d",x,y); } // void swap2(int *x , int *y) { //不改地址,改地址对应的值 printf("x=%d,y=%

C语言指针讲解

指针是C语言的一种数据类型,类似于C中的其他类型,例如int ,char 等.既然指针是一种类型,当我们定义该类型变量,该类型变量就称为指针变量. C中有了指针就有了指向.指向:指针变量指向本身保存的内容(地址或指针)所表示的内存单元. C语言指针是一个特殊的变量,其里面储存的数值被解释成为内存里的一个地址. 在计算机中,所有对数据的操作,都是通过其地址进行的,指针让程序的效率更高,代码更少. 在学习指针的时间,一定要理解并区分指针的四个感念:指针的类型,指针所指向的类型,指针的值,指针本身所占