C语言冷知识
C语言属强类型语言
(1)编程语言分2种:强类型语言和弱类型语言。强类型语言中所有的变量都有自己固定的类型,这个类型有固定的内存占用,有固定的解析方法;弱类型语言中没有类型的概念,所有变量全都是一个类型(一般都是字符串的),程序在用的时候再根据需要来处理变量。
(2)C语言就是典型的强类型语言,C语言中所有的变量都有明确的类型。因为C语言中的一个变量都要对应内存中的一段内存,编译器需要这个变量的类型来确定这个变量占用内存的字节数和这一段内存的解析方法。
4.8.4.3、void类型的本质
(1)void类型的正确的含义是:不知道类型,不确定类型,还没确定类型。
(2)void a;定义了一个void类型的变量,含义就是说a是一个变量,而且a肯定有确定的类型,只是目前我还不知道a的类型,还不确定,所以标记为void。
4.8.4.4、为什么需要void类型
(1)什么情况下需要void类型?其实就是在描述一段还没有具体使用的内存时需要使用void类型。
(2)void的一个典型应用案例就是malloc的返回值。我们知道malloc函数向系统堆管理器申请一段内存给当前程序使用,malloc返回的是一个指针,这个指针指向申请的那段内存。malloc刚申请的这段内存尚未用来存储数据,malloc函数也无法预知这段内存将来被存放什么类型的数据,所以malloc无法返回具体类型的指针,解决方法就是返回一个void 类型,告诉外部我返回的是一段干净的内存空间,尚未确定类型。所以我们在malloc之后可以给这段内存读写任意类型的数据。
(3)void 类型的指针指向的内存是尚未确定类型的,因此我们后续可以使用强制类型转换强行将其转为各种类型。这就是void类型的最终归宿,就是被强制类型转换成一个具体类型。
(4)void类型使用时一般都是用void ,而不是仅仅使用void。
C语言的概述
1. 为什么要学习C语言?
第一代语言:机器语言
第二代语言:汇编语言
第三代语言:高级语言
1. 结构化语言:C ,Basic,缺陷:数据结构和操作是分离的
2. 面向对象的语言:C++, Java
函数和指针非常重要
2. C语言的发展过程:
1983年, ANSI C
1987, ANSI C 87
1994, C99
C语言的优缺点
优点:代码量小,速度快,功能强大
缺点:危险性高,开发周期长,可移植性不强。
怎么样学习C语言?
学习C语言的目标?
常见的问题答疑
学习java语言为什么建议先学习C语言?
如果没有学习过计算机专业课程,能否学懂C语言?
英语和数学不好,能学习C语言吗?
3. 课程计划
基本编程知识
数据类型
运算符和表达式
流程控制
函数
组件
指针
变量的作用域和存储方式
扩展数据类型
专题
字符串的处理
进制转换
补码
动态内存分配
链表的使用
转义字符? 转义字符的意义 ASCII码?
\n? 回车换行? 10?
\t? 横向跳到下一制表位置? 9?
\b? 退格? 8?
\r? 回车? 13?
\f? 走纸换页? 12?
\\? 反斜线符"\"? 92?
\'? 单引号符? 39?
\”? 双引号符? 34?
\a? 鸣铃? 7?
\ddd? 1~3位八进制数所代表的字符?
\xhh? 1~2位十六进制数所代表的字符?
(五)字符串常量?
C语言中,以双引号括起来的,由若干个字符组成的序列即为字符串常量。?
例:“ni hao” “happy”等等。?
(六)符号常量?
符号常量是由宏定义“#define“定义的常量,在C程序中可用标识符代表一个常量。?
例:计算圆的面积的c程序。?
#include?
#define PI 3.14159?
main()?
{?
float r,s;?
r=12.5;?
S=PI _r_r;?
printf(“s= %f ”,s);?
}?
说明:?#define 是宏定义,此程序中所有出现PI的地方都代表3.14159,同时PI称为符号常量。习惯上我们用大写字母来表示符号常量,小写字母表示变量,这样比较容易区别。?
类型的自动转换和强制转换
当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。转换优先级为:?
char < int < float < double?
即左边级别“低“的类型向右边转换。具体地说,若在表达式中优先级最高的数据是double型,则此表达式中的其他数据均被转换成double型,且计算结果也是double型;若在表达式中优先级最高的数据是float型,则此表达式中的其他数据均被转换成float型,且计算结果也是float型。?
在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换;当右边的类型高于左边的类型时,则在转换时对右边的数据进行截取。?
除自动转换外,还有强制转换,表示形式是:?
( 类型 )(表达式);?
例:(int)(a+b)?
讨论:当a值赋值为3.4,b值赋值为2.7,(int)(a+b)和(int)a+b的值分别为多少??
齐齐哈尔工程学院在新疆高考招生计划人数专业代码(2024参考)
宁夏工商职业技术学院在河南高考招生计划人数专业代码(2024参考)
河北高考排名184970左右排位历史可以上哪些大学,具体能上什么大学
湖北高考排名174600左右排位物理可以上哪些大学,具体能上什么大学
考福州外语外贸学院要多少分宁夏考生 附2024录取名次和最低分
湖南师范大学在云南高考招生计划人数专业代码(2024参考)
广东高考排名247430左右排位物理可以上哪些大学,具体能上什么大学
陕西青年职业学院在宁夏高考历年录戎数线(2024届参考)
安徽文达信息工程学院的审计学专业排名怎么样 附历年录戎数线
安徽高考排名263910左右排位理科可以上哪些大学,具体能上什么大学
考安顺学院要多少分广东考生 附2024录取名次和最低分
广东高考排名94120左右排位物理可以上哪些大学,具体能上什么大学
四川高考排名6710左右排位理科可以上哪些大学,具体能上什么大学
考洛阳科技职业学院要多少分甘肃考生 附2024录取名次和最低分
福建高考排名46830左右排位物理可以上哪些大学,具体能上什么大学
重庆机电职业技术大学的数控技术专业排名怎么样 附历年录戎数线
郑州升达经贸管理学院和辽宁工业大学哪个好 附对比和区别排名
赣州职业技术学院和扬州工业职业技术学院哪个好 附对比和区别排名
江西外语外贸职业学院在内蒙古高考历年录戎数线(2024届参考)
四川高考排名14260左右排位理科可以上哪些大学,具体能上什么大学
中华鲟鱼知识大全最新
狗场养狗知识最新大全
养狗知识大全最新
鹦鹉知识的资料大全最新
貂皮基本知识大全最新
宇宙科技基础知识有哪些
日常科技基础知识有哪些
科技基础知识有哪些
关于电脑科技基础知识有哪些
有关金融科技基础知识有哪些
关于科技知识产权基本知识内容
java编程的基础理论知识有哪些
it的分类及基础知识
IT入门基础知识有哪些
java程序设计基础知识有哪些