c语言菜鸡总结

C语言基础阶段总结:

关键字(32个)

系统预先定义好的,有特殊含义的,全部都是小写,不能重新定义(int a;  不可以int int)

数据类型:char  short  int  long  float  double  struct  union  enum  void

控制语句:if  else  for  while  switch  case  default  do  break  continue  goto

存储类型:auto  static  extern  register

const:只读

Return:返回函数

Signed:有符号数

Unsigned:无符号数

Sizeof:计算所占内存空间的大小(单位:字节)

typedef:给已有的类型起别名

volatile:防止编译器优化

 标识符

程序员自己定义的,一般用来定义变量,函数名;

命名规范:见名知意

1.由数字,字母,下划线组成

2.第一个不能为数字

3.不能和关键字重名

基本数据类型

32OS:

字符型:char(1字节)

整型:short(2字节)  int(4字节)   long(4字节)

浮点型:float(4字节)  double(8字节)

64OS:

字符型:char(1字节)

整型:short(2字节) int(4字节)  long(8字节)

 浮点型: float(4字节)  double(8字节)

转义字符

名字

存储类型  数据类型  变量名;

存储类型:决定了开辟的内存空间在内存中的哪个分区

存储类型:auto  static  extern  register

数据类型:决定开辟的内存空间的大小

变量名:决定的是开辟的内存空间的

运算符

单算移关与,异或逻条赋

单目运算符,算数运算符,左移右移,关系运算符,按位与,异或(^),按位或,逻辑运算符,条件运算符,赋值

输入输出

函数:有独立功能的模块

标准输入输出函数:scanf. Printf (对变量的类型没有限制)

输入:从键盘拷贝数据到内存中

输出:从内存中拷贝数据到显示屏

输出

printf(“格式控制串”,输出表);

格式控制串:原样输出的内容+格式化符

输出表:要输出的内容

整型:

%d:以十进制进行输出

%o:以八进制进行输出  

%x(X):以十六进制进行输出

#:自动在八进制和十六进制前添加前缀

%u:无符号整型

%hd:short类型

%ld:long类型

%lld:long long 类型

字符型:

%c:字符型

浮点型:

%f:float

%lf:double

%e:指数

%g:选择小数和指数较短的一个进行输出

%.nf:保留小数点后n位进行输出(不写.n默认小数点后6位)

输入

Scanf(“格式控制串”,地址表);

字符输入输出

输入字符:

getchar()

返回值:输入的字符的ascii码值

Char a;

a = getchar();

输出字符:

Putchar(字符的ascii值);

//输出ascii值对应的字符

Putchar(a);

三大结构:

顺序结构、选择结构、循环结构

顺序结构

语句按照一定的先后顺序去执行

选择结构

单分支if选择结构

if(表达式)

{

语句;

}

先判断表达式是否为真,如果为真,执行语句;

双分支if语句结构

if(表达式)

{

语句1;

}

else

{

    语句2;

}

多分支if语句结构

If(表达式1)

{

语句1;

}

else if(表达式2)

{

语句2;

}

else if(表达式3)

{

语句3;

}

。。。。

else if(表达式n)

{

语句n;

}

Else

{

语句n+1;

}

 switch语句

switch(表达式)

{

case 标号1:

语句1;

case 标号2:

            语句2;

。。。。。

case 标号n:

语句n;

default:

语句n+1;

}

注意:

表达式不能为float类型

标号必须为常量

当表达式等于标号的时候,执行冒号后面的语句,(如果都不相等,则执行default后面的语句)直到switch,case语句结束为止,或者遇到break语句结束!!

循环结构

循环:重复去做一件事

循环三要素:循环的起始条件,循环的终止条件,循环变量的变化

for循环

for(表达式1;表达式2;表达式3)

{

循环体;

}

表达式1:循环变量的起始条件

表达式2:循环变量的终止条件

表达式3:循环变量的变化

先执行表达式1,然后在执行表达式2,如果表达式2为真,就执行循环体,然后再去执行表达式3,如此反复,直到表达式2为假,终止循环。

while语句

While(表达式)

{

循环体;

}

 do while语句

do

{

循环体;

}while(表达式);

先去执行循环体,然后判断表达式是否成立,如果成立,则执行循环体,否则,跳出循环。

案例:用do while实现1-100之和

数组:

概念

定义一千个int类型的变量:挨个定义,起名字?

一组数据类型相同的元素的集合

特点:1.数据类型相同  2.地址连续

部分初始化

Int a[5] = {1,2,3};

a[0]=1,a[1]=2,a[2]=3,a[3]= ?,a[4]=?

当我们对数组进行部分初始化时,没有初始化的部分,其值为0

全部初始化

Int arr[5]= {1,2,3,4,5};

Int brr[ ] = {1,2,3}; //编译器会自动计算元素的个数

总结:1、数组定义在函数体内,相当于(局部变量),没有初始化,其中的值为随机值

2、数组定义在函数体内,用static进行修饰,相当于(局部变量被static修饰),没有初始化,其值为0;

*和&互逆

  1. 字符数组:
  2. 整形数组:(可以保存一堆整形数)

    字符数组:(可以保存一堆字符)

    存储类型  数据类型  数组名[元素的个数];

    Int arr[10];//此时定义了一个名为arr的数组,数组中可以存储10个int类型的元素

    1,2,3,23,45

    c语言中如果要存储字符串?

    “hello”  -----> ‘h’ ‘e’ ‘l’ ‘l’ ‘o’ ‘\0’(单个字符)

    “h”----->’h’  ‘\0’

    此时:要保存一堆字符:定义字符数组

    存储类型 数据类型 数组名[元素的个数];

              Char     str[20];

    数据类型:元素的数据类型(char)

    数组的数据类型:char [20];

    Int arr[10]={1,2,3,4,5};

    部分初始化:char str[20] = {‘h’,’e’,’l’,’l’,’o’,’\0’ };

           没有初始化的部分:‘\0’==  0   (注意区分’\0’,  0 ,  ’0’的区别)

    char str[20] = {‘\0’};//字符数组清零

    Char str[10]={‘h’,’e’,’l’,’l’,’o’};

    Char str[10] = “hello”; //直接将字符串保存在字符数组中

  3. 二维数组:

     概念

    首先:是一个数组

    数组特点:1.数据类型相同  2、地址连续

    字符数组:所有的元素的数据类型为:char

    整形数组:所有的元素的数据类型为:int

    二维数组(数组数组):所有元素的数据类型:int  [一维数组元素的个数]

    二维数组:本质就是所有元素都为一维数组的一个一维数组

    (二维数组中的所有一维数组:一维数组的元素的个数必须相同)

     定义

    定义一个一维数组:

    存储类型  数据类型 数组名[元素的个数];

               Int     arr[5];

    数组数据类型:int [5];

    定义二维数组:

    存储类型  数据类型  数组名[一维数组的个数];

                int    brr[行数][列数];

    数据类型:最里面的元素的数据类型

    行数:一维数组的个数(二维数组中有几个一维数组)

    列数:一维数组中有几个元素

    Int  a[2][3];//此时相当于定义了一个二维数组,这个二维数组中有2个一维数组,每个一维数组中有3个元素

    二维数组数据类型: int [2][3]

    真正的元素个数:行数*列数

    所占内存空间的大小= sizeof(数据类型)*真正的元素的个数

    函数的分类

     库函数

    Printf  scanf  strlen....

    调用函数
    引入头文件

    #include <stdio.h>、 #include <string.h>

    调用函数

    Strlen(数组名);

    Strlen ( str );

    返回值:字符串的实际长度,定义一个int类型的变量,去接受返回值

    函数名(实际参数);

    注意:参数有多少个,参数数据类型是什么,返回值

    自定义函数
    定义函数

    存储类型 数据类型 函数名(形式参数列表)

    {

    函数体;

    返回值;

    }

    数据类型:函数返回值的数据类型

    函数名:标识符(命名规则)(见名知意)

    形式参数列表:实现这个功能,需要传递的参数

    函数体:具体实现功能

    返回值:若没有返回值,void。如果有返回值!有且只能有一个!!!!

    调用函数

    函数名(实际参数);

    注意:

  4. 需要将实参的值拷贝给形参,实参的个数以及数据类型必须和形参一样
  5. 实参可以使变量,常量,表达式,但是必须是一个给定的值
  6. 实参和形参是两块独立的内存空间(所以实参和形参可以重名)
    • 传参实际上是将实参的值拷贝给形参
    • 形参是局部变量,在函数调用的时候开辟空间,函数调用完毕之后,释放空间
    • 指针是什么?

      指针是一个数据类型,他是一个用来保存地址的数据类型

      Int    a;//a用来保存整形数的变量

      Float  b;//b用来保存浮点数的变量

      Char  c;//c用来保存字符的变量

      指针定义一个变量;//变量是用来保存地址的数据类型

      一个变量的地址:&+变量名

      地址是什么?

      内存分配的最小单元:字节。地址就是内存单元的编号。我们把内存单元的编号就叫做地址

      地址的本质:内存单元的编号

      指针:地址

      指针的本质:内存单元的编号

      地址就是指针  

      指针就是地址  

      0x100是指针?
      0x100是指针,但是他是指针常量

      指针 p=0x100;//p指针变量

      0x100;//指针常量

      Int a = 10;-----》a整型变量

      10//整型常量

      定义

      存储类型  数据类型 变量名;

                Int      a;

      存储类型  数据类型  *指针变量名;

            Int  *p;

      *(是一个指针)

      数据类型:指针指向的数据的数据类型

      Int a = 10;

      a:int

      10:int

      数据类型:去掉变量名,剩下的就是数据类型

      *表示我定义的变量是一个指针

      *的作用:

    • 表示指针这种数据类型
    • 双目运算符:乘法
    • 单目运算符:取值(*地址)
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值