翁恺C语言

声明结构的形式

相同数组可以做赋值。

指针的使用场景

12.3多个文件的工程
头文件是不同.c文件之间的媒介,起到桥梁的作用。


include 有两种形式:
标准头文件位置:
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include

12.1-1 全局变量
全局变量的作用域和存储期。
全局变量可以得到默认0值
- 类型定义:
P70函数的定义和调用
- 函数定义

当Sum后面有圆括号的时候,标明Sum是一个函数。
()在函数里面地位关键,即使不需要有参数也要有,如果没有加圆括号,C语言会不认为我们在调用函数。

#include <stdio.h>
void cheer()
{
printf("cheer\n") ;
}
int main()
{
cheer();
return 0;
}
2.函数的返回值


3.函数原型
解决为什么需要对函数进行声明的疑问:需要告诉编译器这个函数的样子,否则,只能把函数题定义在调用这个函数的前面。
那么 每一个调用前面都需要对函数进行声明吗??

#include <stdio.h>
void sum(int begin, int end)//bein and end have been defined here.
{
int i;
int sum=0;
// printf("Please input the Max\n");
// scanf("Max=%d",&Max);
for(i=begin;i<=end;i++)
{
sum=sum+i;
}
printf("%d到%d的和是%d\n",begin,end,sum);
}
int main()
{
sum(1, 10);
return 0;
}

P32多路分支
switch 运行效率比较高
case 是程序运行的开始,break是结束
case --从哪开始执行的标志,进入句子(直到运行到break)
break---结束的标志


用“<”而不是“<=”, 表达的是左闭右开区间。
这是一种习惯性的方式

要么是有大括号;
或者 后面紧跟的语句之后“;”之前是if的结束语句。

偏向于第一种代码:
比较容易堵读懂,更容易维护。
结构体
结构的运算:
取成员变量比取地址的优先级更高。


声明结构,struct point
定义变量,p1-p2,类型是struct point.

结构体声明的位置

字符串是数组!!

指针变量,就是用来保存地址的变量

*p ---p(而不是*p)指向了i, 就是这个量 指向了i这个地址。
int *p, 表示p是一个指针

指针的调用:


i=6 and its adress is 70
f function save the address of the i with the variable *p.

*p,里面的*是个运算符号,用来访问指针p所指向地址的变量值。
*p可以当作一个整体int,类似a'r'r'y中的element,

通过*p访问到了i所在地址上的值(i的值)。

数组计算
数组作为函数的参数时,不能用size of 而用length??这是为什么呢?指针的时候介绍。。

64位架构下,地址是存在8个字节
32位架构下,地址是存在4个字节的地址下。
32位架构下占用4个字节。
在分配在内存的堆栈种的时候,是从上往下分配,所以,他们是挨着的 但是 先定义的i 反倒是的地址比较大。
Ar'ra'y里相邻位置的地址也是相差4.





终于到了取地址的&了
&是用来取得"变量"的地址,c语言的变量是放在"内存"堆栈里面的,这个东西的作用是取出变量的地址。
32位系统,通过变量把地址取出来,强制转换成int并输出。
得到的地址和int型地值,相同

64位的整数和地址就不一样了??整数类型的强制转换是怎么做的??64位架构的地址也是8个字节
地址和int并不是始终相同的,跟架构有关系。

地址分配就涉及到"堆栈"了,
局部变量是按照从上到下分配地址地
指针就是保存地址地变量
通过int来表征地址不靠谱吗??

%p是用来返回地址的操作,地址和整数并不一定是相同的
取地址的符号右边必须是明确的变量,不能有数学计算之类


循环:

计算机的代码不是用来描述关系的,而是一个步骤的描述。

数组越界的问题
for 循环的作用就是遍历数组:
数组的大小是100,但是 没有限制下标能不能超过100
导致: 数组有越界的可能性。



2022-08-08 8.1-3数组的环节

2021-06-26
Print("\n"),反斜杠n的作用:表示后面空一行。Hello World 后面空一行。

变量名字的规则,标识符

输入23的时候并没有被读到,按下回车,相当于加上了";",代码才能读到。
按下回车,运行下一行,得到77.

C语言优先将数字变成浮点数运算
整数是计算机可以完整表达的数,是1的整数倍。


运算符及优先级
赋值也是一个运算符


复合运算符
为了适应底层运算的所有功能

a=1
a++等于1
但是,a等于2
a++对应指令集的inc
a--对应指令集的dec
现在指令集里面不一定有Inc/dec.现在的编译软件更高级,可以直接把a=a+1编译成Inc.目前的意义只是更加简洁。

本地变量(局部变量,自动变量)生存期自动,作用域
用大括号作为生存界限

