C语言基础知识

1Bit (1个比特位) ; 
1Byte (1个字节) = 1B = 8Bit ;
 1KB = 1,024B = 8,192Bit ;
 1MB = 1,024KB = 1,048,576B = 8,388,608Bit ;
 1GB = 1,024MB = 1,048,57KB = 107,373,568B = 858,988,544Bit ;
 1TB = 1,024GB = 1,048,57MB = 107,373,568KB = 109,950,533,632B = 879,604,269,056Bit
sizeof()和strlen()都是计算字符串长度的;但是sizeof是包含\0的,但是strlen()是不包含\0的,
\0 是字符串的结束标识;
sizeof是一个关键字,也是操作符,专门是来用来计算sizeof的操作符数的类型长度的;
单位是字节;
sizeof操作符的操作数可以是类型,也可是变量或者表达式;
sizeof的计算结果是size_t类型的.返回值sizeof_t是无符号的;
strlen是库函数,是专门用来求字符串长度的,使用必须包含头文件#include<string.h>;
strlen求字符串长度的时候,统计的是\0之前的字符的个数

有符号char范围:
有符号char最大值(正数):0111 1111即127,最小值1000 0000(补码) 即-128。
注1000 0000 -1=0111 1111 即2^7-1=128-1=127;
-128即- 2^7;
所以有符号char 取值范围[-128,127];当超过这个取值范围就会溢出。
无符号char取值范围:
无符号最大值即1111 1111 即255,最小值为0;
注:10000 0000 - 1 = 1111 1111即2^8-1即256-1=255;
所以无符号char 取值范围[0,255]。
有符号无符号int取值范围
同理,有符号int 取值范围[- 2^31 , 2^31-1];
无符号int取值范围[ 0,2^32-1]。

单目操作符: ++ -- +  -
前置++:++在操作数的前面,先+1,再使用;
后置++:在操作数的后面,先使用,后+1;
前置--(后置--)与++类同;

强制类型转换:在操作数前面加( ),里面的填需要转换的类型;
例:int a = (int)3.14;  意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分;

输出小数时,希望限定小数的位数; 
如果希望小数点后面只保留两位,占位符可以写成 %.2f;保留3位小数就是%.3f;
占位符%.5s表示只输出字符串"hello world"的前5个字符,即"hello";

EOF = -1;

赋值忽略符:scanf的输入时,有些符号可能被忽略;所以提供了赋值忽略符
*   只要把*加在任何占位符的百分号后面,该占位符就不会返回值,解析后将被丢弃;(%*c)
scanf("%d-%d-%d",&a,&b,&c)  - > 在用户输入成其他的格式,scanf()就会解析失败;
所以要写成scanf("%d%*c%d%*c%d",&a,&b,&c)

goto语句:goto语句可以实现在同一个函数内跳转到设置好的标记出;
建议不使用,如果使用不当就或导致函数内部随意跳转;
多成循环的代码中,如果想快速跳出,就使用goto语句就非常的方便;

rand函数可以生成随机数; 需要包含的头文件是 <stdlib.h>
而rand函数是对一个叫"种子"的基准值进行运算生成的随机数; 
srand函数 就是用来初始化随机数的生成器的 
使用程序运行的时间作为""种子""的,因为时间时刻在发生变化]
time函数 需要包括头文件<time.h>  time函数的返回值设置种子;
time函数返回的这个时间差也被叫做:  时间戳;
因为srand的参数是 unsigned int 类型,我们将time 函数的返回值强制类型转换:
srand((unsigned int)time(NULL));

设置随机数字:
如果我们要设置生成0 ~ 99的随机数: rand()%100
1~100: rand()%100+1;
总结:生成 a~b 的随机数  :   a+ rand()%(b-a+1)

sizeof 是c语言中的一个关键字,可以计算类型或者变量大小,同时sizeof也可以计算数组的大小;
计算数组的大小: 计算的是数组所占内存空间的总大小,单位是 "字节";
sizeof计算的是无符号整型,当无符号整型和有符号整型比较时,会把有符号的整型转换成无符号的整型.

二维数组:就是一维数组作为数组的元素;二维数组作为数组元素的数组被称为三维数组,二以上的被称为多维数组;

sqrt函数:   数学函数 需要头文件<math.h>
double sqrt (double x );
sqrt 是函数名
x 是函数的参数,表示调用sqrt函数需要传递一个double类型的值
double 是返回值类型 - 表示函数计算的结果是double类型的值

自定义函数: ret_type fun_name(形式参数)
ret_type 是函数的返回类型
fun_name 是函数名
ret_type 是用来表示函数计算结果的类型,有时候返回的类型可以是void,表示什么都不返回;

函数的参数分为实参和形参:
实参是调用函数时,传递给函数的参数a和b,称为实际参数,简称实参;
实际参数就是真实传递给函数的参数;
形参是函数名括号中的x和y,称为形式参数,简称形参;

"形参是实参的一份临时拷贝"

return语句:
1,return后面可以是一个数值,也可以是一个表达式,如果是表达式则先执行表达式,然后再返回结果;
2,return返回的值和函数返回类型不一致,系统会自动将返回的值隐式转换为函数的返回类型;
3,return语句执行后,函数就彻底返回,后面的代码不再执行;
4,如果函数中存在if等分支的语句,则要保证每种情况下都有return返回,否则会出编译错误

"printf函数返回的是打印在屏幕上的  "字符"  的  "个数"."
static 和 extern都是c语言中的关键字
static是 静态的 意思,可以用来:
1,修饰局部变量
2,修饰全局变量
3,修饰函数
extern 用来声明外部符号的;

作用域:
1.局部变量的作用域是变量所在的局部范围
2,全局变量的作用域是整个工程(项目)
 
生命周期指的是变量的创建(申请内存)到变量的销毁(收回内存)之间的一个时间段;
1,局部变量的生命周期是:进入作用域变量创建,生命周期开始,出作用域生命周期结束;
2,全局变量的生命周期是:整个程序的生命周期;
使用建议:我们想保留一个变量出函数后,还想保留值,等下一次进入函数继续使用,就可以使用static;

extern 是用来声明外部符号的,如果一个全局的符号在A文件中定义的,在B文件中想使用,就可以使用extern进行声明,然后使用;

(=) -> 赋值    (==)  ->  等于
优先级: ! > && > ||
%d -> 整型 int    %c -> 字符 char   %ld -> 长整型 long int    %s -> 字符串  % f -> 浮点型 float
%zd -> size_t 类型  %p -> 指针
%o -> 八进制      %lf -> double      %#o -> 带前导的八进制  %x ->十六进制  %5d -> 下面见解
%% ->输出一个百分号  %#x -> 带前导的十六进制
例:       如果printf("%2d",123),则打印123;如果printf("%5d",123),则打印00123;
                     %id中的i表示最低打几位数;
例:        printf("%#x",x) 打印的是0x11;

循环:    循环中一定要有结束条件,不然就是死循环
for()  ()中必须是两个"分号";
while循环是至少执行一次;
do-while();    while后面的()一定不能掉;()检查条件是否为真,真的就继续循环;

continue  持续: 用法 :continue是用于终止本次循环的,也就是本次循环中continue后边的代码都不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断;
例1:
int i = 1;while(i <= 10)  
    {
        if(i == 5)
            continue;
        printf("%d",i);
        i++;
    }
打印出来的是 1 2 3 4 (光标);  死循环;   continue直接终止了后面的循环;
例2:
int i = 0;while(i < 10)
{
        i++;
        if(i == 5)
            continue;
        printf("%d\n",i);    
    }
打印的是1 2 3 4 6 7 8 9 10    没有5 因为5被跳过去了;
  
switch{case1:    ; break;       最后default:  ;break;}  case是进入,  break是结束;
Switch循环相当于一个开关;
各case分支后的常量表达式必须是整数类型或字符型;
判断 if:  else :或者

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值