C语言入门篇主要包含内容有:一.分支和循环语句 二.函数 三.数组 四.操作符 .五.指针 .六.结构体 七.函数栈帧的创建和销毁

目录

1.编写第一个程序

2.数据类型

3.变量

4.常量

5.字符与注释

6.操作符

7.关键字

8.宏

9.指针

10.结构体struct

11.其他


1.编写第一个程序

在编译器(vs2022)创建项目,项目名不用特殊字符,空格,汉字较好。然后创建源文件.c文件,在源文件中编写代码。例如:编写hello world程序的代码如下->

第一行代码表使用标准输入输出库,是为使用printf库函数的准备,第二行表调用返回值为整形(int)的主函数main,{}内表函数内容,第三行即调用printf函数打印内容,第四行表主函数返回值。按下ctrl+F5 编译-链接-运行,在屏幕打印hello world。主函数main是一个程序的入口,运行会先从主函数执行,在一个工程中(多个源文件)只能有一个主函数。

2.数据类型

C语言中有多种数据类型,用sizeof关键字可求出他们所占的字节数。(一字节=8bit位)

sizeof的返回类型是size_t,是unsigned int 无符号整形的意思。

3.变量

变量的定义:int a=100;float weight=45.4f;

局部变量:在{}内

全局变量:在{}外(用extern声明可调用其他文件的全局变量)

变量的作用域:变量的使用范围(全局变量的作用域为整个工程)

变量的生命周期:变量进入作用域到出作用域(全局变量的生命周期为整个程序的生命周期)

例如下面代码:

代码1.局部变量a在出 } 生命周期结束

代码2:局部变量与全局变量同名,局部优先

4.常量

分为:

(1)常量:如var=10(整型常量),pai=3.14(浮点型常量),‘a’(字符常量),“abcd”(字符串常量)

(2)const修饰的常变量(将变量修饰为常属性,不能被修改,但编译器不视为常量表达式),例如在定义数组时不能用此变量作为元素个数。(c99支持的变长数组才可以)

(3)#define定义的标识符常量

(4)enum关键字枚举的常量如:

enum sex{male,
female};//male和female视为常量。

5.字符与注释

字符(由单引号修饰):即单个字符‘a’,‘b’等。

字符串(由双引号修饰):多个字符,如“abcdefg”,一个汉字占两个字符。

转义字符:顾名思义为被改变字符意义的字符。

如下:

\ddd先将一到三位八进制数转化为十进制数然后按对应ASCII表输出字符,\xdd则是将十六进制数dd(或第一个d)转化为十进制数。

注释代码:可用/* */或//但前者不能嵌套使用。(vs2022快捷键ctrl+k+c,取消注释ctrl+k+u)

6.操作符

单目操作符

逗号:例如int d=(a-=3,b+=a,c=a-b,b=a-4);表达式会从左到右计算,结果是最后一个表达式。

其他:[]用于数组下标引用 。

()函数调用操作符,操作数是函数和函数的参数。

.和->用于结构体类型变量访问结构体成员。(格式:结构体变量.结构体成员,结构体指针->结构体成员)

7.关键字

例如:

关键字register:修饰关键字,编译器会尽量将变量放在寄存器中,因为集成在CPU上的寄存器有限。

关键字typedef:可理解为将类型再起个名字,如

typedef struct LinkList{int data;struct LinkList*next;}LL;   

可理解为struct LinkList 类型被再起了个名字为LL。

关键字static:将变量放在具有直到程序结束的生命周期的静态区

(1)static修饰在函数中局部变量时,将变量放在静态区,而不是栈区,出了局部范围,不会销毁,下次调用函数时仍存在。

(2)static修饰全局变量时,全局变量本有外部链接属性,在其他源文件可以用extern调用,但被static修饰后则只有内部链接属性,自能在自身源文件中使用。(全局变量作用域变小了)

(3)static修饰的函数时同(2),将函数的作用域变小了。

8.宏

用#define max 100可以宏定义一个常量max为100,或用#define add(a,b) ((a)+(b))定义一个类似加法函数的宏,宏本质是编译器在预处理下的替换,后者加了多个括号是为了防止在替换后发生的运算级优先问题导致的结果不正确。

9.指针

一个内存单元是1个字节(8个byte位),每个byte位有0、1。在32位平台下有32根地址线/电线,产生2^32种电平情况管理内存单元的编号(即他们的地址),最多共能管理2^32/2^30 G=4 G的内存空间。

变量存在内存中,C语言用指针变量来储存变量的地址,不同类型的指针的大小在同一平台下是相同的(32位平台下为4字节,64位平台下为8字节)。但不同类型的指针的步长不同,可以体现在指针的运算上。

10.结构体struct

定义结构体:

struct student{char name[10];int age;char sex[5];char nums[20];};

初始化一个结构体:

struct student s1={"name",20,"sex","88888888"};

访问结构体成员:

Printf("%s",s1.name);//打印结构体变量s1的成员name

11.其他

scanf函数在读取成功时返回1;读取或调用失败时返回EOF,EOF本质是-1,表示End Of File。

......

内容仅供参考,错误欢迎指正。

C语言入门篇 初识C语言相关推荐

  1. C语言入门(初识C语言)

    C语言入门(初识C语言) 前言 什么是C语言? 为什么选择C语言? 计算机语言的发展 高级计算机语言中的经典:C语言 初识C语言(正片开始) 一.第一个C语言程序(你好,C语言) 1.1 #inclu ...

  2. 【C语言入门】--初识C语言

    C语言------初识 第一部分 初识 1.VS 2022 中scanf 报错 的 问 题 当我们在VS2022使用scanf时,会出现以上错误: 解释为: 可以考虑使用scanf_s来代替,如果想继 ...

  3. 【C/C++语言入门篇】-- 文件操作

    [C/C++语言入门篇]-- 文件操作 收藏 此文于2010-03-09被推荐到CSDN首页 如何被推荐? 最近实在是太忙了,这篇整整就推迟了1个月了,实在是对不起.之前本打算这个模块就结束了,文件操 ...

  4. 明解C语言入门篇_第12章_结构体

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  5. 明解C语言入门篇_第9章_字符串的基本知识

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  6. 明解C语言入门篇_第8章_动手编写各种程序吧

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  7. 明解C语言入门篇_第10章_指针

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  8. 明解C语言入门篇_第4章_程序的循环控制

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  9. 明解C语言入门篇_第13章_文件处理

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

最新文章

  1. 《小学生都能看懂的快速沃尔什变换从入门到升天教程》(FWT / FMT / FMI)(最最严谨清晰的证明!零基础也能得学会!)
  2. pythonrgbd图片像素对齐_利用pyrealsense获取深度图,并进行像素对齐
  3. Java经典面试题(N人循环报M个数出列)实现
  4. BAPI_SALESORDER_CREATEFROMDAT2 BAPI创建VA01 销售订单
  5. git介绍和常用操作
  6. Get IAT Table
  7. storm如何集成kafka
  8. iOS开发中的单元测试(三)——URLManager中的测试用例解析
  9. 什么是数据可视化分析平台
  10. 红莲之弓矢(进击的巨人主题曲)
  11. 万能五笔2005输入法平台6.46版---试用手记
  12. [lammps教程]lammps原子沉积实例教程
  13. 计算机与酒店管理大学论文,酒店管理系统的设计与实现
  14. ×××全功能邮件系统(3)
  15. 计算机二级纸张b5大小,b5的尺寸(a4a5b5纸张大小对比)
  16. [论文笔记] 视频广告理解的多模态框架
  17. Android组件化开发,组件间的Activity页面跳转。
  18. linux添加jetdirect协议,Padavan 路由器固件 不能驱动 hp1005、hp1020之类打印机 foo2zjs ZjStream协议的linux打印机驱动程序...
  19. Latest for Mac 0.7.3 应用更新管理器
  20. 为什么游戏流畅需要60帧,而电影流畅只需要24帧?

热门文章

  1. 红木整装,端庄典雅东方境界
  2. deepin安装卡死在蓝色背景_win10系统中登陆时的背景蓝色背景要怎么改
  3. Android Studio创建安卓项目工程
  4. margin常出现的bug
  5. 逆变电路之单极性调制与双极性调制
  6. iPhone 15 被迫用上 Type-C 接口
  7. android lrc歌词解析,正则表达式练习: android 歌词解析lrc 转 txt 代码
  8. 【前端】前端及其技术栈
  9. 易优cms 去除URL中的index.php Eyoucms快速入门
  10. NTP时钟同步服务器在厂站自动化系统中应用探讨