C语言学习记录_2019.02.07
- C99开始,可以用变量来定义数组的大小;例如,利用键盘输入的变量来定义数组大小;
- 赋值号左边的值叫做左值;
- 关于数组:编译器和运行环境不会检查数组下标是否越界,无论读还是写。
- 越界数组可能造成的问题提示语:segmentation fault
- 程序员的责任:有效的下标值:[0,数组的大小-1]
- 例:如下字符可以作下标
- int a[255];
- a['A'] = 1;
因为A的ascll码值小于255;
- 安全的做法:数组使用之前初始化数组;
- 函数的好处:把功能单纯且代码量大的部分封装为函数,提高可视性;
- 代码复制:是程序质量不良的表现;
- 初见函数:
#include<stdio.h> int get_sum(int start,int end)
{
int sum=0;
int i=0;
for(i=start;i<=end;i++)
{
sum+=i;
}
printf("从%d到%d的和是%d\n",start,end,sum);
} int main()
{
get_sum(1,10);
get_sum(20,30);
get_sum(35,45); return 0;
}
其中,在函数定义中参数表(int x,int y )内可以直接定义变量;且属于函数内的尽量全都放到函数内完成变量定义和打印等;
- 使用函数的优点:
1.使程序变得更简短而清晰;
2.有利于以后的程序维护;便于团队开发分工合作
3.可以提高程序开发的效率;
4.提高了代码的可移植性。
- 什么是函数:是一段代码,接收零个或多个参数,做一件事情,并返回零个或一个值;
- 函数类型:当函数类型为void时,不返回任何值,无return;
- return的两种写法
(1)return;-------结束函数的运行;
(2)return 表达式;------返回某一值;
- 单一函数里面可以出现多个return语句;(缺点:违反了单一出口的设计理念)
- C的编译器自上而下分析代码;
- 函数的原型声名=函数的头+分号;且函数的原型声名里面可以不写参数的名字,如void sum(int ,int );
- 新版本的C:函数的原型声名放在主函数的外面;
- 形参与实参的类型不匹配是C语言传统上最大的漏洞,不严格。
- C语言在调用函数的时候,永远只能传值给函数,不能倒传;每个函数有自己的变量空间,与其他函数没有关系;
- 本地变量:函数内部的变量,参数;
- 本地变量:可以定义在函数内或者块内;
- 关于块(如if语句的大括号内):
定义在块内的变量在块外无效;
定义在块外的变量在块内有效;
- 本地变量不会默认初始化;
- 原型声名的时候参数表中一定不要空,即使没有输入参数最好也要写void;(但原则上可以不写,最好写)
如void sum(void);
- C语言不允许函数的嵌套定义;
- 16进制:0x开头
- 8进制:0开头
- 直接量即等价量
- 任何非0整数值都是逻辑的true,例:while(!e)其中!e等价于e==0等价
于”当(!e)等于1的时候”;
- void是保留字;IF,For不是保留字;
- 错题本:&&运算时,当左边的为0时则不再进行右边的运算;
- sizeof为静态运算符,编译时确定了值,运行时会忽略()中的运算,不再进行;例:如sizeof(i++),则不进行i++运算;
- (double)(10/4*4)==8;因为未加.0,因此不会强制类型转换;
C语言学习记录_2019.02.07的更多相关文章
- C语言学习记录_2019.02.10
sizeof:给出某个类型或某个变量在内存中占据的字节数:(1个字节8位,即8比特) 格式符 (1)%ld表示数据按十进制有符号长型整数输入或输出. (2)%d表示数据按十进制有符号整型数输入或输出. ...
- C语言学习记录_2019.02.23
char类型的输出: scanf("%d",&i);//i=49; char x=i; printf("x=%d\n",x); printf(" ...
- C语言学习记录_2019.02.05
switch只能判断整数,而分段函数的判别是一个范围,我们无法用整数来表示范围 跟踪语句的方法: (1)debug调试 (2)printf( )语句跟踪 小套路:当循环次数很大时,可以先模拟较小次数的 ...
- C语言学习记录_2019.02.04
逻辑性变量的定义符:bool,在C语言中只有true和false: 定义方式:bool t = true; 逻辑运算符: !:逻辑非 &&:逻辑与 ||:逻辑或 表达区间的错误形式:4 ...
- C语言学习记录_2019.02.02
变量在第一次被使用之前应该赋初值 scanf(“%d”,&price); scanf(“price%d %d”,&price); scanf中的东西一定是要输入的东西. 定义常量:c ...
- C语言学习记录_2019.02.12
"学计算机一定要有一个非常强大的心理状态,计算机不是黑魔法,都是人想出来的,别人能够想的出来,那么,总有一天,我也能够想的出来." 指针类型的变量就是保存地址的变量. int* p ...
- C语言学习记录_2019.02.09
打印字符串:%s--------printf("%s","abcd"); 打印字符串数组中某一位:%c--------printf("%c" ...
- C语言学习记录_2019.02.08
\n:换行: \t:制表符,相当于大空格: a[5]={2};<------->a[5]={2,0,0,0,0}; 数组初始化的方法:a[5]={0};即全部初始化为0: 数组初始化的 ...
- C语言学习记录_2019.02.06
break语句的作用:当执行到break,则跳出循环,免去不必要的循环次数,节省时间和资源.-----跳出循环,结束循环: continue:跳过这一次循环剩下的语句,进入到下一轮循环.-----跳到 ...
随机推荐
- JVM知识(二):类加载器原理
我们知道我们编写的java代码,会经过编译器编译成字节码(class文件),再把字节码文件装载到JVM中,最后映射到各个内存区域中,我们的程序就可以在内存中运行了.那么问题来了,这些字节码文件是怎么装 ...
- LeetCode题解之 two sum 问题
1.题目描述 2.题目分析 考虑使用hashMap的方式将数组中的每个元素和下表对应存储起来,然后遍历数组,计算target 和 数组中每个元素的差值,在hashMap中寻找,一直到找到最后一对. 3 ...
- C#中的三种timer
转 https://blog.csdn.net/hoiven/article/details/51362582 如果你需要使用规律的时间间隔重复执行一些方法,最简单的方式是使用定时器(timer). ...
- python之线程、进程
线程语法 class Thread(_Verbose): """A class that represents a thread of control. This cla ...
- springMVC入门-05
接着上一讲,介绍如何查询单个数据,此处介绍show()方法的实现.显示单条数据需要使用Users对象中的一个字段作为入参来进行对象查询,将查询出来的数据放在Model中,并且将model中的user对 ...
- .net core 配置swagger遇到的坑
Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. Swagger 可以生成 ...
- [原创]获取JS数组最大值、最小值
核心关键 JS有Array数组对象,使用prototype内置属性扩展,增加Array数组max().min()方法 具体代码 //最小值 Array.prototype.min = function ...
- Centos7下Mysql通过.frm和.ibd恢复数据
通过.frm和.ibd文件恢复表结构和数据 这里以hue数据库中的desktop_document2表为例 分成两步骤,先去表结构,再取数据,最好在一个用完就可以删除的数据库中进行 取表结构篇: 1. ...
- php中empty(),isset(),is_null(),==,===区别
有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚.这里再重复一次,但不是从概念去说,直接用程序例子来说话,应 ...
- 原生 JS 的 Base64 转码
JavaScript 原生提供两个 Base64 相关的方法: btoa():任意值转为 Base64 编码 atob():Base64 编码转为原来的值 注意:这两个方法不适合非 ASCII 码的字 ...