欢迎光临散文网 会员登陆 & 注册

翁恺C语言

2023-06-09 14:28 作者:Raymondzhulei  | 我要投稿

声明结构的形式


相同数组可以做赋值。



指针的使用场景


12.3多个文件的工程

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


include 有两种形式:

标准头文件位置:

C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include





12.1-1 全局变量


12.1-1 全局变量:定义在函数之... P105 - 00:55


全局变量的作用域和存储期。


12.1-1 全局变量:定义在函数之... P105 - 04:22


全局变量可以得到默认0值





  • 类型定义:






P70函数的定义和调用


  1. 函数定义

当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的结束语句。

偏向于第一种代码:

比较容易堵读懂,更容易维护。




结构体

结构的运算:

取成员变量比取地址的优先级更高。




11.2-1 结构类型 P100 - 12:38


声明结构,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.目前的意义只是更加简洁。

本地变量(局部变量,自动变量)生存期自动,作用域


用大括号作为生存界限



翁恺C语言的评论 (共 条)

分享到微博请遵守国家法律