> 文章列表 > C/C++|物联网开发入门+项目实战|C语言基础|程序运行和内存空间|进制|ascii码|字符转换|printf格式输出-学习笔记(3)

C/C++|物联网开发入门+项目实战|C语言基础|程序运行和内存空间|进制|ascii码|字符转换|printf格式输出-学习笔记(3)

C/C++|物联网开发入门+项目实战|C语言基础|程序运行和内存空间|进制|ascii码|字符转换|printf格式输出-学习笔记(3)

文章目录

    • 学习内容提要
      • 关于学习教材
      • 推荐书籍或资料
      • 这个课程我们怎么学
      • 课程特色
      • C语言的重要性?
    • 从和编程相关的计算机基础开始
    • 从计算机的组成谈谈程序的运行
      • 代码是怎么变成程序的
    • 不同的进制,不同的世界
    • 程序和内存空间模型
    • Tips: bit和byte
    • 字符编码基础---谈谈ascii码
      • 字符在计算机中如何存储的
    • TIPS1:巧用ASC码表的一些编程技巧
      • 字符转换示例
      • 转换示例
    • TIPS2:格式输出
      • 不同进制打印示例

摘自:
麦子学院-C语言程序设计及快速入门

学习内容提要

计算机基础知识(C语言相关)
C语言基础导学
C语言进阶导学
一个C语言小项目的实现

关于学习教材

C语言编程.一本全面的Q语言入门教程(第3版)

推荐书籍或资料

代码大全
高质量C语言编程
C语言库函数参考手册
C语言常见问题集

这个课程我们怎么学

1看视频
2结合视频看教材
3难点多理解
4动手多编程
5编码要规范

课程特色

1.真正的零基础课程,从计算机基础开始
2.摒弃枯燥的Q语言语法讲解,就讲学习重点和难点
3.真正有用的C语言课程,内含大量编程经验和技巧
4.适合零基础同时也适合进阶学习,内容由浅入深
5.强调商业编码规范,以后求职Q语言不再是你的门槛
6.老师实际编码操作,从程序设计需求分析,到流程图,到伪代码,到代码实现,真正告诉你该如何编程。

C语言的重要性?

1先看看编程语言排行榜
在这里插入图片描述
2现在哪些开发还会用到C语言?
1)单片机,指针-地址-硬件
2)驱动linux
3)iOS,面向对象特性
4)PC,
3哪些人需要学习C语言?
1)嵌入式
2)linxu底层及应用
3)iOS
Tips:编程语言学习之路
1)语法
2)编码规范
3)程序设计的思想,编码思维

从和编程相关的计算机基础开始

从计算机的组成谈谈程序的运行

代码是怎么变成程序的

产生代码和让代码变成程序的必要工具
一个图看懂代码到程序的过程

在这里插入图片描述

不同的进制,不同的世界

计算机的进制和人类的进制
1什么是进制
2计算机的世界—二进制
3人类的世界—十进制,十六进制
常见的进制转换
http://jingyan.baidu.com/article/495ba84109665338b30ede98.html
Tips:用电脑自带的计算器实现进制快速转换
在这里插入图片描述

Tips:编程中,哪些场合会用到进制的转换

程序和内存空间模型

1两个概念—物理内存及内存空间模型
在这里插入图片描述
2内存空间的基本单位 1字节=8bit(8个空)11111111=0xff=255
3内存空间几个要素
空间大小
地址

打印地址示例

#include <stdio.h>int main()
{int a =POLICE;printf("%p\\n",&a);return 0;
}

返回值:

c:\\Users\\Vera\\Desktop>cd "c:\\Users\\Vera\\Desktop\\" && gcc 2.c -o 2 && "c:\\Users\\Vera\\Desktop\\"2000000000064FE2C

00 00 00 00 00 64 FE 2C 2位1个字节,8个字节,64位。
静态地址示例:

#include <stdio.h>int main()
{int a =2;static int b=12;printf("%p\\n",&a);printf("%p\\n",&b);printf("%p\\n",b);//static b=12;//printf("%p %p\\n",&a,&b);return 0;
}

返回值:

c:\\Users\\Vera\\Desktop>cd "c:\\Users\\Vera\\Desktop\\" && gcc 2.c -o 2 && "c:\\Users\\Vera\\Desktop\\"2
000000000064FE2C
0000000000408000
000000000000000C //12=0x0C

Tips: bit和byte

1byte=8bit

字符编码基础—谈谈ascii码

字符在计算机中如何存储的

1英文字符的存储
2中文字符的存储(unicode)

1什么是ASC码表
国际上普遍采用ASC编码(American Standard Code for Information Interchange)。美国信息交换标准代码是一种用于信息交换的美国标准代码。7位字符集广泛用于代表标准美国键盘上的字符或符号。通过将这些字符使用的值标准化,
ASCII允许计算机和计算机程序交换信息。ASCI字符集是与ANS字符集中的前面128个(0-127)字符相同。
2如何查看ASC码表

TIPS1:巧用ASC码表的一些编程技巧

·数字字符到数字的转换:数字表示的字符-0x30(48)得到真实的数字

字符转换示例

#include <stdio.h>int main()
{char c='1';printf("c=%c,c=%d,c_change=%d\\n",c,c,c-48);return 0;
}

返回值:

c:\\Users\\Vera\\Desktop>cd "c:\\Users\\Vera\\Desktop\\" && gcc 2.c -o 2 && "c:\\Users\\Vera\\Desktop\\"2
c=1,c=49,c_change=1

·大小写字母的转换:“a”-“A”=0x32

转换示例

#include <stdio.h>int main()
{char c='A';printf("c(char)=%c,c(int)=%d,c_change(char)=%c,c_change(int)=%d,c_change(HEX)=%x\\n",c,c,c+32,c+32,c+0x20);return 0;
}

返回值:

c:\\Users\\Vera\\Desktop>cd "c:\\Users\\Vera\\Desktop\\" && gcc 2.c -o 2 && "c:\\Users\\Vera\\Desktop\\"2
c(char)=A,c(int)=65,c_change(char)=a,c_change(int)=97,c_change(HEX)=61

TIPS2:格式输出

%x:普通小写16进制
%X:普通大写16进制
%#x:带0x前缀的小写16进制
%#X:带0X前缀的大写16进制
%hd 中h的意思是短整形
%ld中l的意思是长整型

不同进制打印示例

#include <stdio.h>
int main()
{short a = 0b1010110;  //二进制数字int b = 02713;  //八进制数字long c = 0X1DAB83;  //十六进制数字printf("a=%ho, b=%o, c=%lo\\n", a, b, c);  //以八进制形似输出printf("a=%hd, b=%d, c=%ld\\n", a, b, c);  //以十进制形式输出printf("a=%hx, b=%x, c=%lx\\n", a, b, c);  //以十六进制形式输出(字母小写)printf("a=%hX, b=%X, c=%lX\\n", a, b, c);  //以十六进制形式输出(字母大写)return 0;
}

返回值:

c:\\Users\\Vera\\Desktop>cd "c:\\Users\\Vera\\Desktop\\" && gcc 1.c -o 1 && "c:\\Users\\Vera\\Desktop\\"1
a=126, b=2713, c=7325603
a=86, b=1483, c=1944451
a=56, b=5cb, c=1dab83
a=56, b=5CB, c=1DAB83