C语言教程01 - 初始C语言02

简介: C语言教程01 - 初始C语言02

11.字符串


字符串末尾默认放\0 ,

image.png

对于数组而言,未初始化部分自动放\0


image-20210829103856463

%s打印时,遇到\0停止。

arr的只有6个空间,放不下\0  越界访问遇到\0才停止

所以要特别注意\0的问题,防止越界



image.png

image.png

对于arr数组,是不包含\0的,strlen求字符串长度,遇到\0才停止,所以越界访问了!


strlen是库函数,求字符串长度,\0是字符串的结束标志,不算进长度


问:数组acX的长度比acY的长还是短?


char acX[] = "abcdef"
char acY []= {'a','b','c','d','e','f'}
复制代码


->长度:acX>acY  因为问的是数组的长度,不是字符串的长度,不能按strlen的方式算。

acX比acY多放进去\0,所以acX长度比acY长


12.转义字符


转义字符:转变意义


如:\n  换行 \t :相当于tab键


三字母词:


如: ??) 被翻译成] ??(  被翻译成[


问:如何打印单引号,双引号,%d


printf("%c  ", '\'');   //打印单引号  用\将'转义
printf("%s  ", "\"");    //打印双引号  用\将”转义
printf("%%d ");       //打印%d
printf("%c ",'\\');   //打印\  用\将\转义
复制代码

image.png


printf("%c\n",'\065');    //’5‘
//  0ddd ->八进制表示方法
// 八进制数字065转化为10进制后的值作为ASCII值代表的字符被打印
//8进制的065 ->10进制:53 对应字符5
//相当于
printf("%c\n",'5');
复制代码
printf("%d ", 032);     //  0ddd是八进制
  printf("%d ", '\32');   // 三种写法都一样 \32也是八进制
  printf("%d ", '\032');    //  /ddd  不一定需要三位
//打印结果:26  3*8^1 + 2* 8^0 = 26
复制代码

13.注释


/*  */ C语言风格的注释


// C++风格的注释


注意:/*不能嵌套注释

image.png

14.extern声明外部变量


使用另一个源文件中的变量


要先声明:


如: extern int g_val; 再使用


15.操作符


! : 逻辑反操作

if(!a)    //a不为真才进入if语句  即a为假进入if语句
{
}
if(a)   //a为真进入if语句
{}
复制代码


~ :对二进制序列按位取反


整数在内存中存储的时候,存储的是二进制补码
一个整数的二进制表示有三种形式:原码,反码,补码
正整数:原码反码补码相同
负整数:原码反码补码需要计算,  反码 :符号位不变,原码按位取反 补码:反码+1
对于有符号整数:最高位为符号位
符号位为0:表示正数
符号位为1:表示负数
复制代码


以%d形式打印,把真实值取出来,内存中存的是补码,我们真实能够读懂的是原码,内存中是补码时,我们要将补码转化为原码才是真实值

对补码求补码就是原码 ,或者逆序   补码-1->反码->按位取反->原码 (针对负数)


内存中,二进制为全1时,代表的是十进制 -1


16.关键字


auto-自动变量


//局部变量自动创建自动销毁,本质上是 自动变量
int main()
{
    int a = 10; //相当于auto int a  = 10;  只是把auto省略了
}
复制代码


break-----用于循环或者switch

const-------常属性

continue ------用于循环。不可用于switch

enum-----枚举关键字

extern-----用来声明外部符号

register---寄存器

return -----返回函数

sizeof ----计算变量所占内存空间大小

static----静态,修饰变量,函数

struct---结构体关键字

typedef---类型重定义

union -----共用体

void---空类型(无类型)

volatile----易变的--linux


寄存器

image.png

计算机上的存储空间:寄存器,高速缓存(cache),内存,硬盘,网盘。都是不同的存储空间


关于register
register int num = 100;//只是建议把100存放到寄存器中,由编译器最终决定是否放入寄存器
int a = # //错误,因为&,取出的是内存的地址,num被放入寄存器中,寄存器是独立于内存的空间,所以不能取地址。



相关文章
|
1月前
|
C语言 开发者
C语言实现猜数字小游戏(详细教程)
C语言实现猜数字小游戏(详细教程)
|
1月前
|
编译器 C语言 C++
VSCode安装配置C语言(保姆级教程)
VSCode安装配置C语言(保姆级教程)
|
5月前
|
IDE 编译器 开发工具
C语言教程:如何进行环境搭建
C语言教程:如何进行环境搭建
|
5月前
|
存储 机器学习/深度学习 编译器
C语言基础简单教程
C语言基础简单教程
|
5月前
|
搜索推荐 编译器 C语言
C语言的简单教程
摘要: 了解C语言中的注释,包括//单行和/*多行*/注释,注意不要嵌套。使用快捷键Ctrl + K, Ctrl + C/U处理注释。C语言的关键字如'int'和'return'有特定含义,通常小写且高亮显示。常量是不可变的,分为不同类型。练习涉及识别不同类型的常量,如整型、实型和字符型。使用printf通过占位符输出常量,例如`printf("%d", 10)`。作业包括根据占位符输出个性化信息,如学校名字、高考分数和女朋友的详细信息,并掌握在不同情况下使用\n进行换行。
|
6月前
|
存储 算法 程序员
零基础C语言“函数”教程,有手就行
零基础C语言“函数”教程,有手就行
|
6月前
|
C语言
【用C语言轻松实现】- 扫雷【超详细教程】
【用C语言轻松实现】- 扫雷【超详细教程】
|
6月前
|
C语言
【用C语言轻松搞定】三子棋(超详细教程)
【用C语言轻松搞定】三子棋(超详细教程)
|
5月前
|
C语言
C语言结构体教程:从入门到实践(保姆式教学)
C语言结构体教程:从入门到实践(保姆式教学)
66 0
|
6月前
|
C语言
循坏语句解析(C语言零基础教程)
循坏语句解析(C语言零基础教程)