c基础学习

本文详细介绍了C语言的基础知识,包括C语言的标准、关键字、编译器GCC的使用方法、数据类型、注释、预处理、编译过程、变量与常量、循环结构。讲解了C语言中的while、for、do...while循环以及分支语句if和switch的用法,强调了循环控制和避免死循环的重要性。
摘要由CSDN通过智能技术生成

1章(c语言基础知识)

  1. c语言的使用标准,第一个标准是c89标准
  2. c语言的有关键字是32个,9种控制语句以及34种运算符
  3. c程序文件的扩展名:文件名.c

编译器:其实简单的理解就是就计算机只能进行计算较为简单的二进制,但是人的日常生活中是很难理解这些语言的,为此,有人想到了一种方法,就是在计算机与人类的语言(接近)之间搭建桥梁,这样人类就可以使用容易理解的语言去控制计算机的运行。

gcc编译器:==(GNN complier collection )==可以用来编译c语言,c++、java、Ada、object c、Go等语言

gcc 编译的方法

1.gcc [-optiond]

2.g++ [-optiond]

解释:

  1. 命令、选项和源文件之间使用空格分隔
  2. 一行命令中可以有零个、一个或多个选项
  3. 文件名可以包含文件的绝对路径,也可以使用相对路径
  4. 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,Windows平台为a.exe

gcc、g++编译常用选项说明:

选项 含义
-o file 指定生成的输出文件名为file
-E 只进行预处理
-S(大写) 只进行预处理和编译
-c(小写) 只进行预处理、编译和汇编

gcc的安装在晚上的教程就比较多,在这里就不一一介绍了

tips:

1.测试gcc安装:win+r键输入cmd后,在命令上中输入:cmd (进入命令行)
然后输入:

gcc -v//需要空格

2.用gcc编译c方法
在文件目录上方点击cmd进入命令行,然后输入

gcc hello.c#加空格,此时输入文件名.c此时默认生成文件名.exe文件(同一目录下)

数据类型(生活中的数据类型是多种多样的,而程序在编写时是为了模拟显示的生活场景或解决一些实际问题)

#include<>和#include""区别

tips:

  1. < > 表示系统直接按系统指定的目录检索
  2. “” 表示系统先在 “” 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索

注释:

  1. //叫行注释,注释的内容编译器是忽略的,注释主要的作用是在代码中加一些说明和解释,这样有利于代码的阅读
  2. /**/叫块注释
  3. 块注释是C语言标准的注释方法
  4. 行注释是从C++语言借鉴过来的

在这里插入图片描述

1)预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法

2)编译:检查语法,将预处理后文件编译生成汇编文件

3)汇编:将汇编文件生成目标文件(二进制文件)

4)链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去

64位和32位

  1. 所有的64位CPU兼容32位的指令,32位要兼容16位的指令,所以在64位的CPU上是可以识别32位的指令
  2. 在64位的CPU构架上运行了64位的软件操作系统,那么这个系统是64位
  3. 在64位的CPU构架上,运行了32位的软件操作系统,那么这个系统就是32位
  4. 64位的软件不能运行在32位的CPU之上

CPU计算时,先预先把要用的数据从硬盘读到内存,然后再把即将要用的数据读到寄存器。于是 CPU<—>寄存器<—>内存,这就是它们之间的信息交换

第一个c语言程序:

//demo1第一个文件
#include<stdio.h>//包含一个叫stdio.h的头文件(std—standard i-input o-output)



int main(void)//主函数(返回值为整型),主函数有且仅有一个(void为传入的参数,此时的参数为空(void))

{
   
    printf("hello world\n");//完成的任务是输出hello world(printf是print function的缩写)

    return 0;//因为函数结束需要返回值,此时的返回值需要为整型(0也为整型数据)

}
数据类型 说明以及字节数
char 字符型(1字节)
short 短整型(2字节)
int 整型(4字节)
long 长整型(4字节)
long long 更长的整型(8字节)
float 浮点型(4字节)
double 双精度浮点型(8字节)

注释:c语言的标准规定是sizeof(long)>=sizeof(int)即(8>4)

计算机中的内存:最小的为比特位是二进制

计算机中的最小的为字节(一个字节是8个比特位)

一个kb是1024个字节
一个mb是1024kb
一个G是1024
一个T是1024G

**变量和常量(**简单的理解就是常量就是不变的值、变量就是变化的值)
变量的定义方法:类型 变量名=赋值

例如:int age =10;

变量分为局部变量和全局变量(两者在命名时是不要相同如果是一致的,此时局部变量优先)

#include<stdio.h>
#include<stdlib.h>
int num1=10;//此时定义的变量是全局变量

int main(void)

{
   
    int num2=20;//此时定义的是局部变量
    printf("%d\n",num2);  

    return 0;

}
#include<stdio.h>
#include<stdlib.h>
int num1=10;//此时定义的变量是全局变量
示例:局部变量和全局变零重名
int main(void)

{
   
    int num1=20;//此时定义的是局部变量
    printf("%d\n",num1);  //此时输出的是局部变量定义的值20

    return 0;

}

变量的生命周期:

1.从{开始到}结束,变量只在这个区域内起作用

2.全局变量的生命周期从头至尾,即整个程序的生命周期中局部变量都起作用

C语言中的常量:

  1. 字面常量
  2. const修饰的常变量
  3. #define第一的标识符常量
  4. 枚举常量
    字面常量
#include<stdio.h>
#include<stdlib.h>


int main(void)

{
   
    10;//字面常量

    return 0;

}

const修饰的常变量

#include<stdio.h>
#include<stdlib.h>


int main(void)

{
   
    const int num1=10;
    printf("%d\n",num1);
    num1=20;//此时提示错误,因为num1为cosnt修饰的常变量,此时该值是不能改变的,但是实质还是一个变量
    printf("%d\n",num1);
    

    return 0;

}

标识符常量

#include<stdio.h>
#include<stdlib.h>

#define red 50
#define max 10
int main(void)

{
   
    int arr[max]={
   0};//此时max需要时常量,此时不会提示错误
    printf("%d\n",red);//输出为50

    return 0;

}

枚举常量

#include<stdio.h>
#include<stdlib.h>
enum Color{
   //定义枚举常量
    yello,
    red,
    blue
};

int main(void)

{
   
    printf("%d\n",yello);//0
    printf("%d\n",red);//1
    printf("%d\n",blue);//2
    enum Color color=blue;
    printf("%d\n",color);
    //颜色本身不可变,但是可以将颜色改为另外的两种颜色
    color=0;
    printf("%d\n",color);
    return 0;

}

tips:

1.枚举关键字为enum

2.字符串:双引号括起来的一串字符

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


int main(void)

{
   
    char arr1[]={
   "abc"};//等价于char arr1[]="abc";
    char arr2[]={
   'a','b','c'};//如果改为: char arr2[]={'a','b','c','\0'};就是一样的
    printf("%d\n",sizeof(arr1));//4
    printf("%d\n",sizeof(arr2));//3
    printf("%s\n",arr1);//此时实际为'a','b','c','\0'
    printf("%s\n",arr2);//此时实际为'a','b','c','\0'
    printf("%d\n",strlen(arr1));//strlen是计算字符串的长度
    printf("%d\n",strlen(arr2));
    //'\0'是字符串结束的标志
    return 0;

}

tips:
\0对字符串是十分重要的,(\0是转义字符-就是转变原来的字符的意思)
此时直接放置0也是可以的,只是加上\0加以区分(清晰明了)

例如:

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

int main(void)

{
   
    printf("abc\n");//\n是转义字符换行
    printf("%c\n",'\'a');//此时输出为‘a
    printf("c:\test\32\test.c");//此出是\t为水平制表符,此时字符会自动缩颈四个字符,也就是键盘中的tap键的作用
    //如果手要输出\t则需要使用\\t->\t
    printf("\n");
    printf("%d\n",strlen("c:\test\32\test.c"));//此时输出为13,以为此时的\32为8进制数,此时为一个字符

    return 0;

}

C语言中如何实现循环

  1. while语句
  2. for语句
  3. do …while语句

数组:相同类型元素的集合

示例:

int arr[10];//定义一个存放十个整型数字的数组
char ch [20];//定义一个存放20个字符的数组
float arr2[5];
//赋值
int arr3[10]={
   1,2,3,4,5,6,7,8,9,10};
//可以使用下标进行查找,下标是从0开始的,最大的下标数位为10-1=9

数组变遍历:

函数的分类:

  1. 自定义函数
  2. 库函数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int Add(int x,int y)//自定义的函数Add
{
   
    return (x+y);
}


int main(void)

{
   
    int num1;
    int num2;
    int ret=0;
    scanf("%d%d",&num1,&num2);
    ret=Add(num1,num2);
    printf("ret=%d\n",ret);

    return 0;

}

操作符:

  1. 算术操作符+ - * \ %(取余)
  2. 移位操作符:<<(左移)>>(右移)
  3. 位操作符:二进制位&(按位于)、|(按位或)^(按位异或)
  4. 赋值操作符: +=、-=、*=、/=、%=、>>=、<<=

操作符:

  1. 单操作法(1个操作数):如:!逻辑反操作
  2. 双目操作符(两个操作符)如a+b
  3. 三目操作符

tips:

c语言中0为假非0为真

sizeof(计算变零或者类型所占内存空间的大小)

使用方法:

int num1=1prntf("%d\n,sizeof(num1));//此时求的是变量占内存空间的大小
prntf("%d\n,sizeof num1);//同上,此时括号可省略
prntf("%d\n,sizeof(int));//此时求的是整型数据占内存空间的大小,此时括号不可省略
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值