C语言第八课

主要内容:指针(C语言的代表,会C语言不会指针,恭喜你C语言白学了)

一、数据的存储

字节是最小的存储单位(byte),一个字节成为一个存储单位(内存单元),不同的数据类型占用的存储单元是不同的(1个字节是8位)

char1个字节(byte)8位(bit)

short2个字节(byte)16位(bit)

int4个字节(byte)32位(bit)

long8个字节(byte)64位(bit)

float4个字节(byte)32位(bit)

double8个字节(byte)64位(bit)

为了正确的访问内存单元,每个内存单元都有编号,每个编号成为内存地址,内存单元中的内容是我们需要用的

二、数据的访问

直接访问:直接访问内存地址中的内容

简介访问:通过内存地址访问内存中变量的值

指针是最常用的间接访问方式,间接访问方式随处可见

访问方式:

通过指针变量指向所定义的数据类型所开辟的内存单元的编号得到存储的值

三、指针变量

存放内存地址的变量(通俗讲就是存放自定义变量的地址的变量)

int  *p = NULL  初始值恒等于0

通过int可以看出是一个整型指针

注意:指针变量所占用的字节数只与操作系统有关

输出打印地址的转换符是 “ %p ”

四、取址运算符& 和取值运算符 *

int a = 3,b = 1;/ /  自定义整型变量 a = 3,b = 1

int *p = &a;       / /   定义一个指针p,用取址运算符&取出a的内存地址赋值给指针p

printf(" %p ", p)/ /  输出打印指针p所指向的地址值

&  和  *  是配套的操作符

五、指针的算术运算

注意:指针只有加( + )、减( - )运算

int  *p = &a//  指针类型决定移动几个字节

p++:指针向高位移动4个字节

p--:直接向低位移动4个字节

指针的重指向

int  a = 3,  b =  5;

int  *p =  &a;  / /  将指针p指向a的地址,得到a的地址值

p = &b; / /   讲指针重新指向b的地址,得到b的地址值

指针变量的赋值意味着重指向

*p:1、指针变量定义时,只起修饰作用,告诉编译器p是个指针

2、指针变量取值时,访问内存地址为p的地址

六、指针与数组

数组:是用连续内存空间存放数据的构造类型

数组名:数组首元素的地址

示例:

int  arr  [] = { 1, 2, 5, 6};

arr 恒等于 arr[0]

*p、*(p + 1)和*p + 1的区别

*p:代表p的地址

*(p + 1):将指针p向上移动一个单位

*p + 1:p的地址加1

数组本身就是一个指针(指针可以当数组名使用)

指针与数组的区别

指针:只与系统操作系统位数有关

数组:与元素个数和类型有关

那么,用指针能否算出数组元素个数?

有结尾标示的数组能算出元素个数,例如字符数组

整型数组、浮点型数组都不能

指针与字符串

指针可以操作字符,也可以操作字符串

示例:

char  string[] = " iPhone " ;  / / string为数组名

char  *p = string;   / /指针p指向字符数组首地址

*(p + 1) = ‘ v ‘ ;   / /操作单个字符

printf(" %c " , p + 1);   / /操作整个字符串

七、指针数组

存放指针的数组称为指针数组

示例:

char  *string[3] = {" iPhone ", " Plus ", "iPad"};

注意:可以通过指针修改字符数组,但是不能修改常量字符串

指针与函数

即指针作为参数

数组名代表数组的首地址,而且是常量地址,不可被修改

时间: 2024-11-05 02:20:39

C语言第八课的相关文章

【C语言探索之旅】 第一部分第八课:第一个C语言小游戏

? 内容简介 1.课程大纲 2.第一部分第八课:第一个C语言小游戏 3.第一部分第九课预告: 函数 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文

【C语言探索之旅】 第二部分第八课:动态分配

内容简介 1.课程大纲 2.第二部分第八课: 动态分配 3.第二部分第九课预告: 实战"悬挂小人"游戏 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己

【C++探索之旅】第一部分第八课:传值引用,文件源头

内容简介 1.第一部分第八课:传值引用,文件源头 2.第一部分第九课预告:数组威武,动静合一 传值引用,文件源头 这一课的标题有点怪.其实是由这一课的几个重点内容结合起来取的名,慢慢学习就知道啦. 上一课<[C++探索之旅]第一部分第七课:函数效应,分而治之>中,我们初步认识了函数. 不过不要高兴得太早,你以为函数就这样离你远去了嘛?怎么可能,函数将伴随一生好吗,只要你继续编程的话.哈哈,所以你是跑不掉了~ [小编,都跟你签了协议了,没吃药不要随便出来溜达] 这一课我们就继续深入学习与函数相关

【Linux探索之旅】第二部分第八课:RTFM 阅读那该死的手册

内容简介 1.第二部分第八课:RTFM 阅读那该死的手册 2.第二部分第九课预告:查找文件,无所遁形 RTFM 阅读那该死的手册 今天这一课也会很轻松. 一般Windows的用户不太习惯看使用手册.有些Windows下的软件下载后是带有使用手册的,但是谁会花时间看呢? 在Linux下,阅读手册应该成为一个反射动作,一个自然而然的反应.虽说一开始要我们去看手册会有点让人生畏,但是我们学习各种Linux命令的使用方法的最好去处就是手册了. 我们这个系列教程也绝不能和手册相比,因为我们的教程里对于每一

[译文]JOAL教程 第八课 OggVorbis格式流

[译文]JOAL教程 原文地址:http://jogamp.org/joal-demos/www/devmaster/lesson8.html 原文作者:Athomas Goldberg 译文:三向板砖 转载请保留以上信息. 这是JOAL教程系列的最后一节,学习笔记:http://blog.csdn.net/shuzhe66/article/details/40583771 我十分建议您在阅读完本文后参考学习笔记内容,这节的问题非常多. 第八课OggVorbis格式流 本文是DevMaster.

第八课 网络通信

unix_c_08.txt================第八课 网络通信================一.基本概念------------1. ISO/OSI七层网络协议模型~~~~~~~~~~~~~~~~~~~~~~~~~~+------------+--------------+ ---| 应用层 | Application | ^+------------+--------------+ || 表示层 | Presentation | 高层+------------+---------

NeHe OpenGL教程 第三十八课:资源文件

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十八课:资源文件 从资源文件中载入图像: 如何把图像数据保存到*.exe程序中,使用Windows的资源文件吧,它既简单又实用. 欢迎来到NeHe教程第38课.离上节课的写作已经有些时日了,加上写了一整天的code,也许笔头已经

Swift语言指南(八)--语言基础之元组

元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Huang). 下例中,(404, "Not Found") 是一个描述HTTP状态码的元组.HTTP状态码是当你向WEB服务器请求页面时服务器返回的一个特殊值,如果你(向WEB服务器)请求了一个不存在的网页,返回的状态码就是 404 Not Found : 1 let http404Error = (404, "Not Found

NeHe OpenGL教程 第二十八课:贝塞尔曲面

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第二十八课:贝塞尔曲面 贝塞尔曲面: 这是一课关于数学运算的,没有别的内容了.来,有信心就看看它吧. 贝塞尔曲面 作者: David Nikdel ( [email protected] ) 这篇教程旨在介绍贝塞尔曲面,希望有比我更