0
点赞
收藏
分享

微信扫一扫

C语言初阶1 -初识C语言

精进的医生 2024-08-30 阅读 32

数据类型

char //字符数据类型

例:

#include <stdio.h>
int main()                                   //main前面int(决定返回值类型)表示main函数调用后返回一个整型值     
{
    char ch= 'A';                            //此处必须为''否则代码无法执行
    printf(" % c\n",ch);                     //此处必须为""否则代码无法执行,%c-->char
    return 0;                                //返回0;此处语法上(实际上一般为0)不必为0,整型即可
}

short //短整型

int //整型

例:

#include <stdio.h>
int main()
{
    int age= 19;                            
    printf(" % d\n",age);                   //%d-->int(10进制)
    return 0;
}

long //长整型

long long //更长的长整型

float //单精度浮点型

例:

#include <stdio.h>
int main()
{
    float age= 19.10;                       
    printf(" % f\n",age);                   //%f-->float
    return 0;
}

double //双精度浮点型

各数据类型大小

计算机单位

bit - 比特位 ---->> 一个二进制位( 1 or 0 )

byte - 字节 ---->> 八个比特位

kb ---->> 1024个byte

mb ---->> 1024个kb

gb ---->> 1024个mb

tb ---->> 1024个gb

pb ---->> 1024个tb

使用代码了解数据大小 及 各数据大小

#include <stdio.h>
int main()                                      
{                              
    printf(" % d\n",sizeof(char));            //必须为%d(输出为整型);sizeof(东西),东西可以是类型也可以是变量
    return 0;                               
}

 char 1个字节

short 2

int 4

long 4(本编译器)/8                sizeof(long) sizeof(int)

long long 8

float 4

double 8

变量 与 常量

变量

定义变量的方法

例:

#include <stdio.h>
    int main()                                       
    {
        short age= 20;                         //此处 age 即为变量
        //float weight=90.5                    系统对小数默认为双精度浮点型,此时会报错(精度丢失)
        float weight=90.5f;                    //正确写法                  
        char ch = 'w';                    
        return 0;                               
    }

变量的分类

#include <stdio.h>
    int num1 = 10;                                 //全局变量--定义再代码块{ }外的变量
    int main()
    {
        {
            int num2 = 20;                          //局部变量--定义再代码块{ }内的变量
            int num1 = 100;                         //不会报错,打印结果为100(局部优先)
            return 0;    
        }
        printf("%d\n",num2)                         //报错,num2未定义(局部变量不能在本代码块{ }外使用)
        printf("%d\n",num1)                         //打印为 10 (全局变量能在本代码块{ }外使用)
    }

变量的使用

               以scanf函数为例:

#define _CRT_SECURE_NO_WARNINGS 1            //使用#def...(必须加在原文件第一排),而不是scanf_s(部分编译器使用)使代码更通用
        #include <stdio.h>
        int main()
        {
            int num1 = 0;                             //不必为0,甚至可写为:   int num1;              
            int num2 = 0;
            int sum=0;                                //正确位置
            scanf("%d%d",&num1,&num2);                //使用 输入函数scanf(将变量放入指定地址);取地址符号&
            //int sum=0;                              C语言规定变量要定义在代码块的最前面(老版本,新版本无此语法可任意放置)
            sum=num1+num2;
            printf("sum=%d\n",sum);    
            return 0;    
        }

变量的作用域与生命周期

变量的作用域(scope)

全局3 变量的作用域是整个工程!

例:      test1.c
            #include <stdio.h>
            int a = 100;
                test2.c
            #include <stdio.h>
            int main()
            {
                extern int a;                        //用extern(声明外部符号)让test1.c的全局变量在test2.c中使用
                printf("%d is a num\n", a);
                return 0;
            }

变量的生命周期

局部变量的生命周期 : 进入作用域开始,出作用域结束

全局变量的生命周期 : 整个程序的生命周期(main)

常量

常量的分类

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
enum LikeColour                 //枚举关键 - enum
{
    red,
    yellow,
    blue,                        //'red,yellow,blue,black'为枚举常量
    black                        //red-0, yellow-1, blue-2, black-3
};                               // ';'不可缺少

int main()
{
    2;                           //字面常量
    
    int num=1;                   //变量
    num=4;                       //变量可以改变赋值
    const int num=1;             //const(常属性)修饰的常变量(具有常属性,但本质为变量,即被锁定的变量)
    //num=4;                       无法可以改变赋值,会报错
    
    #define MAX 10;              //#define 定义的标识符常量(也可以放在{}外,与变量用法类似)
    
    enum LikeColour I =red;      //枚举常量的使用
    I = blue;                    //变量改变赋值
    //blue = 10                    枚举常量不可改变,会报错
    
    return 0;
}

字符串 与 转义字符 与 注释

字符串

用 " " 引起来的一串字符称为字符串字面值,简称字符串

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    "abcdef";                           //用""括起来的即为字符串
    "";                                 //空字符串
    char arrl1[] = "abc" ;              //用 数组 存储字符串 ,arrl1--'a','b','c','\0', '\0'字符串的结束标志
    char arrl2[] = {'a','b','c'} ;      // X --打印结果'abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫涕F$p?'
    char arrl3[] = {'a','b','c',0} ;    // O --打印结果'abc'(用'\0'也行)
    printf("%s\n",arrl1);               //字符串的占位符--%s
    printf("%s\n",arrl2);
    printf("%s\n",arrl3);           
    return 0;
}

  • : 字符串的结束标志是一个 \0 的转义字符。在计算字符串长度时 \0 不算字符串内容

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    char arrl1[] = "abc" ;              
    char arrl2[] = {'a','b','c'} ;   
    printf("%d\n",strlen(arrl1));        //strlen -- string lenth -- 计算字符串长度, 结果 3      
    printf("%d\n",strlen(arrl2));        //结果  42(2022VC社区版),abc后无\0没有结束一直随机(近似随机)到0
    return 0;
}

转义字符

例:
    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    int main()
    {    
        printf("abcn");
        printf("abc\n");                // '\'转变了'n'的含义-->>换行
        
        printf("C:\test\32\test.c");    //结果 'C:      est␦    est.c'
        printf("C:\\test\\32\\test.c"); //结果 "C:\test\32\test.c"
        
        return 0;
    }

strlen("C:\test\32\test.c") --->13

\32(\ddd) ---> ascii码第26位

转义字符对照表 - TabKey9 - 博客园 (cnblogs.com)

Ascii完整码表(256个)_ascii码表-CSDN博客

注释

/ *

*/ (有缺陷,-不能嵌套,只到第一个 */ 为止)

#define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    /*
    int main()
    {
        /*
        printf("废物");
        */                    //注释到此结束,以下内容未被注释
        return 0;            
    }
    */

语句分类

选择语句

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int input =0;
    printf("你要学C语言吗?(1/0)>:")   ;  
    scanf("%d",&input);                    //导入,让你输入 东西 (这里指1/0)
    if(input==1)                           //选择语句
        printf("祝你成功!\n"); 
    else
        printf("O.o ?\n") ;      
    return 0;            
}

循环语句

while循环

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
    int line=0;
    printf("开始学C语言\n");  
    while(line<20000)
    {
        printf("敲一行代码,这是第%d行代码\n",line);
        line++;
     }
     printf("已经循环两万次了");
    
    return 0;            
}

for循环(我还没学到,后面学)

do...while循环(后面学)

函数

#define _CRT_SECURE_NO_WARNINGS 1           
        #include <stdio.h>
        int Add(int x, int y)
        {
            int z =x+y;
            return z;        
        }
        int main()
        {
            int num1 = 10;                                      
            int num2 = 20;
            int a =100;
            int b =200;                              
            int sum=0;                           
            //sum=num1+num2;
            sum = Add(num1,num2);
            printf("sum=%d\n",sum);
            //sum=a+b;
            sum = Add(a,b);
            printf("sum=%d\n",sum);   
            return 0;    
        }

数组

-------- 一组相同类型元素集合

数组的定义方式

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
    int a = 1;
    int b = 2;
    int c = 3;                               //太过麻烦,使用数组
    int arr[10]={1,2,3,4,5,6,7,8,9,0};       //定义一个存放10个整数数字的数组,arr是数组名称
    return 0;            
}

数组的使用

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{                            
    int arr[10]={1,2,3,4,5,6,7,8,9,0};       //数组的使用是通过下标来实现的,下标从0开始(如:arr[4]为3)
    int stare=0;
    while(stare<10)
    {
        printf("%d ",arr[stare]); 
        stare++;   
    }
    return 0;            
}

操作符

  • 算数操作符
  • + - * / (商) %(取模,余数)
  • 移位操作符
  • >> <<
  • 位操作符
  • &按位与 | 按位或 ^ 按位异或(相同为0,不同为1)
  • 赋值操作符
  • = += -= *= /= ^= |= >>= <<=
  • 单目操作符
  • ! 逻辑反操作
  • -/+ 负值/正值
  • & 取地址
  • sizeof 操作数的类型长度(以字节为单位)
  • ~ 对一个二进制取反
  • --/++ 前置(先--/++,再使用),后置(先使用,再--/++)
  • * 间接访问操作符(解引用操作符)
  • (类型) 强制类型转换
  • 关系操作符
  • >
  • >=
  • <
  • <=
  • != 用于测试 ' 不相等 '
  • == 用于测试 ' 相等 '
  • 逻辑操作符
  • && 逻辑 与
  • | | 逻辑 或
  • 条件操作符(三目操作符)
  • exp1 ? exp2 : exp3 (解释: 1如果真,执行2;否则3)
  • int main() { int a = 10; int b=20; int max = (a>b? a : b) printf("%d \n",max) return 0; }
  • 逗号表达式
  • exp1,exp2,exp3......expn
  • 下标引用 [ ] ,函数调用 ( ) ,结构成员 . ->
  • [ ] ( ) . ->

关键字

register , signed , unsigned , struct , static(局部变量,全局变量,函数) , define...........

指针......

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{  
    int a = 10;
    printf("%p \n",&a)          //取地址(%p--取地址占位符,&取地址操作符)
    int* p = &a;                //int* 地址变量
    *p = 20;                    //*p--->a(* -- 解地址符)
}

结构体

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
struct Book
{
    char name[20]
    short price;
};                        //";"不可缺少
int main()
{  
    struct Book b1 = {"C语言入门",30};
    printf("书名:%s\n",b1.name) 
    b1.price = 15;
    
    struct Book* pb = &b1;
    printf("书名:%s\n",(*pb).name);
    printf("书名:%s\n",pb->name)   ;               
}

举报

相关推荐

0 条评论