初始c语言,新手小白的自学之路

导读

数字化时代,科技不断创新发展,尝试在时代下找到一片自己的天地,学习C语言,只是一块敲门砖,通过这一段时间的对C语言的初步了解之下,更加理解自己的无知,目光所短浅

我是跟着哔哩哔哩上一位博主--鹏哥C语言开始学习的,以下是一些学习笔记和范例代码,为了督促自己持续学习,我尝试开始写一些博客

范例程序

以下是鹏哥C语言1-24课题的全部内容,部分记录于笔记本之中,也就是初始C语言的一部分内容

#include <stdio.h>
#include <string.h>//计算字符串长度函数

/*函数体,封装函数*/
/*
    int Add(int x,int y)
    {
        int z=0;
        z=x+y;
        return z;//return(x+y)
    }
*/

//int main()
//{
/*求和*/
/*    
    int age = 54;
    int price = 66;    //初始化
    scanf("%d %d", &age,&price);
    int sum=age+price;
    printf ("%d\n",sum);    
    printf("hello word!\n");
    return 0;
*/

/*输出字符串*/
/*
    char arr1[]="abcdef";
    char arr2[]={'a','b','c','d','e','f','\0'};
    printf ("%s\n",arr1);
    printf ("%s\n",arr2);
    return 0;
*/

/*输出字符串长度*/
//char arr1[]="abcdef";
//char arr2[]={'a','b','c','d','e','f','\0'};//结束标志\0
//int len1=strlen(arr1);
//int len2=strlen(arr2);
//printf ("%d\n",len1);
//printf ("%d\n",len2);
//return 0;

/*转义字符*/
//%d 打印整形
//%c 打印字符
//%s 打印字符串
//%f 打印float类型
//%1f 打印double类型
//%zu 打印sizeof返回值
/*
    printf ("%s\n","(are you ok\?\?)");//显示are you ok??
    printf ("%c\n",'\'');//前加\打印单引号'
    printf ("abcdef");printf ("你好");//直接打印字符串、中文
    printf ("\"");//前加\直接打印双引号"
    printf ("abcd\\0ef");打印abcd\0ef
    printf ("c;\\test\\test\\.c");//直接打印c;\test\test\.c
    printf ("\a");//触发电脑蜂鸣(警告字符)
    printf ("abcd\nef");///n换行字符
    printf ("%c\n",'\130');//\130把八进制的130转换为十进制的88再通过ASCLL码打印字符X(查表)
    printf ("%c\n",'\x60');//\x60把十六进制的60转换为十进制的96再通过ASCLL码打印字符'(查表)0-125之间
    printf ("%d",strlen("c:\test\628\test.c"));//共14个字符,/后八进制字符,/t算一个字符
    return 0;
*/

/*选择与循环语句*/
/*
    int input = 0;
    printf("人生在世\n");
    printf("你快乐吗(1/0)?");
    scanf("%d",&input);
    if(input==1)
    {
        printf("yes\n");
    }
    else
    {
        printf("no\n");
    }
    return 0;//选择语句if else switch
*/
/*
    int line = 0;
    printf("出生\n");
    while(line<70)
    {
    printf("吃饱饭\n");
    line++;
    }
    if(line==70)
    {
    printf("盖棺材\n");
    }
    else
    {
    printf("继续吃\n");
    }
    return 0;//循环语句while
*/

/*函数基本概念*/
/*
    int n1 = 0;
    int n2 = 1;
    scanf("%d %d",&n1,&n2);
    int sum=Add(n1,n2);
    printf("%d\n",sum);
    return 0;
*/

/*数组认识*/
/*
    int arr[10]={0,1,2,3,4,5,6,7,8,9};//数组下标从0开始到第9个元素,通过下标访问数组
    char ch[5];//字符串
    double d[30];//浮点型
    printf("%d\n",arr[8]);//数组下标从0开始到第8个元素,通过下标访问数组
    int i=0;
    while(i<10)
    {
        printf("%d",arr[i]);
        i=i+1;
    }
    return 0;
*/

/*操作符运用*/
//算术操作符+ —* /
//移位操作符<<左移 >>右移
//赋值操作符= += -= *= /= &= ^= |= >>= <<=
//单目操作符:只有一个操作数的操作符 !:取反,-(负号),&(取地址符号),sizeof(操作数的类型长度),~(对一个数2进制位取反),——(后置位\前置位)++,(类型)强制类型转换
//关系操作符:>,<,==(用于测试相等),!=(用于测试不相等)
//逻辑操作符:&&(逻辑与),||(逻辑或)
//条件操作符(三目操作符):exp1?exp2:exp3[真,1,0][假,0,1],有三个操作数
//逗号表达式:exp1,exp2,exp3.......从左到右依次执行
//下标引用,函数调用和结构成员:[]().->
/*
    int a=7/2;//除号的两端都是整数时,执行的是整数除法
    float A=7/2.0;//除号的两端只要有一端是浮点数时,执行的是浮点数除法
    int b=7%2;//取模两端只能是整数
    printf("%d\n",a);
    printf("%.1f\n",A);
    printf("%d\n",b);
    return 0;//算数操作符
*/
/*
    int a=0;//初始化
    a=20;//赋值
    a+=3;//相当于a=a+3
    a-=3;//相当于a=a-3
    return 0;//赋值操作符
*/
/*
    int flag=0;
    if(!flag)//!变假为真
    {
        printf("yes\n");
    }
    return 0;
*/
/*
    int a=10;
    printf("%d\n",sizeof(a));//4
    printf("%d\n",sizeof(int));//4
    printf("%d\n",sizeof a);//4
    return 0;//单目操作符,读字节大小
*/
/*
    int a=10;
    int b=a++;//后置++,先使用,后++ int b=a;a=a+1;
    int c=++a;//后置++,先++,后使用 int a=a+1;b=a;
    printf("%d\n",a);//12
    printf("%d\n",b);//10
    printf("%d\n",c);//12
    return 0;//单目操作符,++,--
*/
/*
    int a=(int)3.14;
    printf("%d\n",a);
    return 0;//单目操作符,强制类型转换double转int,(int)
*/
/*
    int a=20;
    int b=10;
    if(a||b)
    {
        printf("haha\n");
    }
    return 0;//逻辑操作符
*/
/*


    int a=19;
    int b=12;
    int r=(a>b?a:b);
    printf("%d\n",r);
    return 0;//条件操作符[真?1,0]
*/
/*
    int arr[10]={0,1,2,3,4,5,6,7,8,9};//定义数组的形式
    arr[8]=20;//[]就是下标引用操作符,arr和3就是[]的操作数
    printf("%d\n",arr[8]);
    return 0;//下标引用
*/
/*
    int sum=Add(2,3);()就是函数调用操作符,Add,2,3都是()的操作数
    return 0;//调用函数
*/

/*常见关键字*/
//auto:自动创建自动销毁,局部变量常见,省略
//break:跳出1循环(常见:for,while,do while)//continue:用于循环
//case://default:(switch case)
//const:常属性
//enum/枚举 struct/结构体 union/联合体:类型关键字
//extern:声明外部符号
//goto
//register:寄存器,计算机存储设备:寄存器(集成到CPU上),高速缓存,内存,硬盘
//static 静态的
//signed:有符号的/unsigned:无符号的
//sizeof:计算大小
//typedef:类型重命名
//void:无(函数的返回类型/函数参数)
//volatile
//int float char short long double 
//变量命名:1.有意义2.名字必须为字母、数字、下划线组成(不能以数字开头,不能有特殊字符)3.变量不能是关键字
//}
/*typedef类型定义*/
/*
    typedef unsigned int uint;//对unsigned int 重命名(只能对类型)
    int main()
    {
        unsigned int num = 0;
        uint num2 =1;
        return 0;
    }
*/
/*static*/
//用来修饰变量(局部变量、全局变量)(改变了变量的存储区域)、函数
/*
    修饰局部变量
    void test()
    {
        static int a=1;//static 修饰局部变量, 局部变量进入他的范围创建,出他的范围不销毁;局部变量a,在创建后在函数运行完成后销毁//进入他的范围创建,出他的范围销毁
        a++;//1.a=2 2.a=3 3.a=4 4.a=5.......10.a=11
        printf("%d ",a);//运行结果2 3 4 5 6 7 8 9 10 11
    }
    int main()
    {
        int i=0;
        while(i<10)//循环十次
        {
            test();
            i++;
        }
        return 0;
    }
*/
/*
    修饰全局变量
    static int g_val=2024;//修饰全局变量:这时,这个全局变量的外部连接属性就变成了内部连接属性,其他源文件(.c)就不能再使用全局变量
    //extern int  g_val;//extern声明外部符号,声明在其他文件定义的变量
    int main()
    {
        printf("%d\n", g_val);
    }
*/

/*
    修饰函数
    static int Add(int x,int y)//在int Add(int x,int y)这个函数加以static修饰,这个函数的外部连接属性就变成了内部连接属性,其他源文件(.c)就不能再使用全局变量
    {
        return x+y;
    }
    //extern int Add(int x,int y)//函数在其他文件内,合理声明函数,可以调用(函数具有外部链接属性)
    int main()
    {
        int a=10;
        int b=20;
        int z=Add(a,b);
        printf("%d\n",z);
        return 0;
    }
*/
/*register*/
/*
    int main()
    {
        //寄存器变量
        register int num=3;//建议3存放在寄存器中
        return 0;
    }
*/
/*define*/
/*
    定义标识符常量
    #define NUM 100
    int main()
    {
        printf("%d\n", NUM);
        int n=NUM;
        printf("%d\n",n );
        int arr[NUM]={0};
        
        return 0;
    }
*/
/*
    定义宏,宏是具有参数的
    #define ADD(x,y) ((x)+(y))
    int Add(int x,int y)
    {
        return x+y;
    }
    int main()
    {
        int a=10;
        int b=20;
        int c=ADD(a,b);
        printf("%d\n",c );
        return 0;
    }
*/

/*指针*/
//地址也称为指针,存放指针的变量就叫指针变量
//内存:分成一个一个内存单元,每个内存单元都有一个编号(一个内存单元大小是一个字节1byte)
/*
    指针与指针变量
    int main()
    {
        int a=10;//向内存申请4个字节,存储10
        //&a;//取地址操作符
        printf("%p\n",&a);//打印地址,地址随机存储
        int*p = &a;//p就是指针变量,int说明p指向的对象是int类型
        return 0;
        
        //char ch = 'w';
        //char *pc = &ch;
        return 0;
        
        *p=20;//解引用操作符,意思就是通过p中存放地址,找到p所指向的对象,*p就是p所指向的对象,即a
              //其实就是a=20
    }
*/
/*
    不同类型的指针变量大小
    int main()
    {
        
        //int*p;
        //char*p2;
        //不管是什么类型指针,都是在创建指针变量、
        //指针变量大小取决于一个地址存放的时候需要多大空间
        //32位机器上的地址:32bit位-4byte,所以指针变量的大小是4个字节
        //64位机器上的地址:64bit位-8byte,所以指针变量的大小是8个字节
         printf("%d\n",sizeof(char*)); //4
         printf("%d\n",sizeof(short*)); //4
         printf("%d\n",sizeof(int*)); //4
         printf("%d\n",sizeof(float*)); //4
         printf("%d\n",sizeof(double*)); //4
        return 0;
    }
*/

/*结构体struct*/
//C语言中自定义类型的能力,把单一类型组合在一起
/*
    struct Stu
    {
        //结构体成员
        char name[20];
        int age;
        char sex[10];
        char tele[12];
        
    };
    void printf(struct Stu* ps)
    {
        printf("%s %d %s %s\n",(*ps).name,(*ps).age,(*ps).sex,(*ps).tele);
        printf("%s %d %s %s\n",ps->name,ps->age,ps->sex,ps->tele);//结构体指针变量->成员名
    }
    
    int main()
    {
        struct Stu s = {"zhangsan",20,"nan","18881236543"};//结构体初始化
        //printf("%s %d %s %s\n",s.name,s.age,s.sex,s.tele);//结构体对象.成员名
        printf(&s);
        return 0;
    }
*/

结语

在这段时间,我依次掌握了c语言的数据类型、常量与变量的概念以及其作用域,生命周期、字符串、转义字符、注释、选择与循环语句、函数、数组、操作符、常见关键字、define定义、指针,只是初步了解,学习日期2024.7.15-7.18
 

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值