1.函数
1.浮点计数器都是64位 8字节
2.c语言中不存在类型转化:强转也不是
(类型不可变)
int a = 10;
char ch = 'a';
a = ch; 显示转换
a = (int)ch; 隐式转换
PS:强转是数值的变化,是将扩展后的char值赋给int(ch的类型仍旧不会变化)
指针不同 指针必须用显示转换 指针代表的是,数值不变时,对类型发生了深刻的变化
凡是内置类型产生的临时量都具有常性 只可读不可写
2.函数四要素
四部分构成的:
返回类型 函数名(形参列表)
{
函数体;
}
定义变量时需要见名知意 不要用拼音!
总不能以后给别人起名字 起1 2 3
= =太草率了
举个栗子:
int AddInt(int a, int b) {
int c = a + b;
return c;
}
//返回类型需要和定义的返回类型保持一致
int main() {
int x = 10, y = 20;
int z = AddInt(x, y);
printf("%d\n", z);
}
**说明:**预编译、编译、链接之后进入程序的执行。
代码区:
数据区:凡是在函数外定义的全局变量都在数据区 最复杂的就是数据区
堆区:
栈区:栈的发明,引发了操作系统的兴起。 栈的大小默认为1M=1024*1024
栈帧的引入:
可以通过给指令的方法,来调整栈的大小,但是不可能一次性把1M的空间分配给一个函数,因此引入了栈帧。
栈是连续的,释放后下一个申请的栈空间的就会填补上来,而不是新开辟。
关于函数调用:
函数调用时,是从右向左取值的
3.查资料的方法
- 为什么将内存大体上分为这四个区域?
查看资料的方法:
1.查询C语言的语法问题:去c的官网上解释意义。
2.研究生的论文和博士生的论文:清北 卡耐基大学(全世界计算机最牛的大学)。
想要搞清最根本的问题:操作系统和微机原理。
4.关于 bool值、&&、||和scanf
1.bool值:真有千千万,假只有一个0
2.&& 简洁与 || 简洁或
3.我们为什么不用scanf?
1> scanf没有安全性检查 不能检查输入的数据的正确与否
2> 因此引入了scanf_s
例如:scanf_s("%s", str, 10);
已经告诉了字符串的长度是10,如果超过10则错误,因此有了检查功能
但是需要清楚的知道,字符串的长度,会比较麻烦
比较大小函数
int max(int a, int b) {
return (a > b ? a : b);
}