导读
数字化时代,科技不断创新发展,尝试在时代下找到一片自己的天地,学习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