• 售前

  • 售后

热门帖子
入门百科

C语言基础知识概况

[复制链接]
36号1 显示全部楼层 发表于 2022-1-15 19:09:10 |阅读模式 打印 上一主题 下一主题
一、什么是C语言
就如人的语言分汉语英语,作用是实现人与人之间的交流相同。C语言是一门计算机语言。实现人与计算机交互的一种语言。C语言是一门广泛用于底层开发的编程语言
计算机的结构自上而下大概分为以下几层
应用软件QQ、网盘
用户
操作系统windows、Linux
硬件裸机
其中Linux操作系统就是用C语言写的。
计算机语言经历了由高级语言 机器语言 B语言 C语言的进步。虽然现在出现了很多语言,类如JAVA、Pathon、PHP...但是,作为一个能与计算机底层直接交互的语言,我认为C是学习计算机语言的必修课。
C语言能实现人机交互的方法是:编译器将C语言转换成汇编语言,汇编语言编译成机器指令
C语言的入口是由main函数进入的。(在一个程序中,main函数有且只有一个)
二、C语言的数据类型
char 、short 、int 、long 、float、double...组成C语言的基本数据类型
在32位操作系统下,可以用sizeof操作符来查出它们都占多少字节:

如图显示的是在vs2019环境下的情况,需要注意的是,在Linux环境下,long的值可能会发生改变,但仍满足sizeof(long) >= sizeof(int)
 三、变量和常量
3.1.1变量
变量描述变化的概念,不变的用常量表示。变量例如:float weight = 55.5f
全局变量与局部变量是容易混淆的点,下面用代码来解释下它们的不同。

 这里面,107行代码的a=10就是全局变量,它虽然不在main函数中定义,但是依然可以直接用。

 但是,如果在定义全局变量的情况下,我们依然可以在函数{}内部定义a的值。这时候输出的a的值采用局部优先原则。
3.1.2变量的作用域和生命周期
局部变量 的作用域是变量所在的局部范围
全局变量 的默认作用域是整个程序        一个全局变量,在不给初始化的时候,默认值为0

还用上面的代码来说就是:a=10这个全局变量,也可以用到这个程序的其他函数中去,不仅仅可以在主函数中使用。
 3.2 常量
一般来说,我们编程者自己设置的量就算常量,但是有三种特殊情况的常量
①:const修饰的常变量,怎么说呢。const 修饰的常变量 具有常属性,但本质上是一个变量。
意思就是,程序员不能通过直接改变const修饰的常量。但是有可能通过其他方法改变
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         char arr[4];
  5.         const int a = 0;
  6.         arr[4] = 97;
  7.         printf("%d\n",a);
  8.         return 0;
  9. }//这里面,a在内存中的位置其实就是arr[5],就算它把a变成97了,但是不是通过直接赋值的方法改变的a的值
复制代码
②:#define定义的标识符常量

③:枚举常量 
  1. enum Sex
  2. {
  3.         MALE,
  4.         FAMALE,
  5.         SECRET
  6. };
  7. int main()
  8. {
  9.         printf("%d\n", MALE);            //0
  10.         printf("%d\n", FAMALE);          //1  
  11.         printf("%d\n", SECRET);          //2  
  12.         return 0;
  13. }
复制代码
枚举类型默认是从第一项为0开始的,不过可以自己设置首项值,如:这里MALE为5的话,FAMALE与SECTRET的值就为6和7。
 四、转义字符

 需要注意的是最后两个。

 
 五、选择语句、循环语句
5.1选择语句
简单的选择语句if、else,举个栗子:好好学习好工作,不好好学习卖红薯。
  1. int main()
  2. {
  3.         int input = 0;
  4.         printf("你要好好学习么?(1/0):");
  5.         scanf("%d", &input);
  6.         if (1 == input)
  7.                 printf("好offer\n");
  8.         else
  9.                 printf("卖红薯\n");
  10.         return 0;
  11. }
复制代码
5.2循环语句
敲100000行代码成为大牛
  1. int main()
  2. {
  3.         int line = 0;
  4.         while (line < 100000)
  5.         {
  6.                 printf("敲代码第%d行\n", line);
  7.                 line++;
  8.         }
  9.         printf("恭喜你成为大牛!\n");
  10.         return 0;
  11. }
复制代码
六、数组
字符数组的大小(多有不足,待补充):
  1. int main()
  2. {
  3.         char arr1[] = { 'a','b','c' };
  4.         char arr2[] = { "abc" };
  5.         char arr3[] = { "cde" };
  6.         printf("%d\n", sizeof(arr1));
  7.         printf("%d\n", sizeof(arr2));
  8.         printf("%d\n", sizeof(arr3));
  9.         return 0;
  10. }
复制代码
运行演示:

 七、操作符
按作用对象数量可分为单目运算符、双目运算符、三目运算符
单目操作符:
例:!逻辑反
双目操作符:
例:+  俩东西
三目运算符:
例:?:仨东西
(a)?b:c
a真执行B,假执行C
逗号表达式:从左向右依次计算,整个表达式的结果是最后一个表达式的结果。
举个例:
八、C语言关键字
auto:
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed        有符号
unsigned    无符号
sizeof
static
struct
switch
typedef    类型重定义
union
void
volatile        C++里面用
while

typedef:类型重定义        其实就是重新起一个名
九、static
static有修饰局部变量、全局变量、和函数的区别,那针对这三种情况展开讨论
9.1static修饰局部变量

 这是在test函数中没有加static的情况,如果加了static,再来试一下:

 对于第一个没有static修饰的n,在test函数中,每次执行过 test 之后就会被释放。
而对于加了static修饰的n,在第一次执行完static int n=1这个语句之后,相当于把int n等于1的值保存在了静态区,这点在最后进行总结。
9.2static修饰全局变量
我们知道,全局变量的作用域是整个程序。
而,extern修饰变量的声明。 
举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v。就像:

 而经过static修饰之后,那么这个全局变量的作用域就只能在本.c文件下使用了,演示一下:

可以看到,同样的代码,但是后者用了static 来修饰这个全局变量。那么在test.c中就不能用了。
 9.3static修饰函数
static经过我们上面的演示,它起的好像都是限制“作用范围”的作用,那static修饰函数我们也来演示一下:

在没有static修饰的时候,通过extern声明使用test1.c的函数Add可以达到通过函数计算两者和的目的,那加上static后呢? 

 由此,我们对上述进行一个总结:

 十、define定义常量和宏
#define又称宏定义,标识符为所定义的宏名,简称宏。标识符的命名规则与前面讲的变量的命名规则是一样的。#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。
宏所表示的常量可以是数字、字符、字符串、表达式。其中最常用的是数字。

那么,程序中什么时候会使用宏定义呢?用宏定义有什么好处呢?我们直接写数字不行吗?为什么要用一个标识符表示数字呢?

宏定义最大的好处是“方便程序的修改”。使用宏定义可以用宏代替一个在程序中经常使用的常量。注意,是“经常”使用的。这样,当需要改变这个常量的值时,就不需要对整个程序一个一个进行修改,只需修改宏定义中的常量即可。且当常量比较长时,使用宏就可以用较短的有意义的标识符来代替它,这样编程的时候就会更方便,不容易出错。因此,宏定义的优点就是方便和易于维护。
下面举几个例子来说明#define定义常量和宏
  1. #define NUM 100
  2. #define CH 'X'
  3. #define STR "hehe"
  4. #define Add(x,y) ((x)+(y))
  5. int main()
  6. {
  7.         printf("%d\n", NUM);
  8.         printf("%c\n", CH);
  9.         printf("%s\n", STR);
  10.         int a = 10; int b = 20;
  11.         int sum = Add(a, b);
  12.         printf("%d\n", sum);
  13.         return 0;
  14. }
复制代码

 十一、指针
提起指针,相信有很多同学学C语言都是被指针给劝退了,(因为当初我也是),还记得有一天下午看到指针,哭了,看哭了。不得不说很多人为了流量就用指针来吓人,我当初看到的教学视频,它上来给我将二级指针,三级指针。当时就被恶心到了。但是,指针其实多多理解,也不是很难。下面就讲解一下在下对于指针的一些拙见,希望能帮到大家一些。
指针,其实它就算地址,我们知道,在使用计算机进行一些操作的时候,肯定就会有数据来保存在其中,而保存的数据,要想及时反映出它所在的位置,就需要有一个属于它的编号,这个编号,就称为指针。
大家知道,int型的指针,在内存中占4个字节,那这四个字节具体是怎样的呢,我就来演示一下:

 
  1. int main()
  2. {
  3.         int a = 10;
  4.         printf("%p", &a);
  5.        
  6.         return 0;
  7. }
复制代码

 pa中保存的实际上是a的地址,就是0x00F3FE84但是通过这个地址,可以改变这个地址里面的值。
其实pa自己也有地址,它保存在内存的另一片空间

注:在32位操作系统下,指针的大小均为4字节(因为32位就算4个字节)

 
通过这里就可以观察到。 
刚学指针,水平尚低,还望大家多多包涵,多多指正。
十二、结构体
我们生活中是多种多样的,一个人的各项信息能够用代码呈现出来,少不了结构体的贡献。
例如,在描述一个学生的信息时,可以包含姓名,学号,年龄,成绩。利用结构体可以很好的进行描述。
例如在描述 张三,171,20,96.5 和 李梅,172,19,96.4这两组数据时,可以如此定义:
  1. struct Std                        //这里定义一个结构体变量
  2. {
  3.         char name[20];
  4.         int group;
  5.         unsigned int age;
  6.         float score;
  7. };
  8. int main()
  9. {
  10.         struct Std s1 = {"张三",171,20,96.5};
  11.         struct Std s2 = {"李梅",172,19,96.4};
  12.         printf("%s %d %d %f\n", s1.name, s1.group, s1.age, s1.score);
  13.         printf("%s %d %d %f\n", s2.name, s2.group, s2.age, s2.score);
  14.         return 0;
  15. }
复制代码
运行结果如下:

 以上就算对于C语言基础知识的一些概况了,代码让我们生活的世界更加精彩,真的是科技改变了我们的生活。奋斗了呀!共勉!

来源:https://blog.caogenba.net/WangLongxyd/article/details/122477337
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作