初识C语言

打印 上一主题 下一主题

主题 826|帖子 826|积分 2478

初识C语言

本篇主要针对刚打仗C语言(无编程底子)快速了解C语言的整体架构,对C语言有个大体了解 仅适用于入门
前言



  • 有效的工具

  • 一个好的编译软件(用来得心应手即可)本人使用的Visual Studio2019

  • buff加持

    • github: link
    • gitee: link
      上述两个均是代码托管平台,提供免费的私有仓库托管。前者是国外,后者是国内
      本人使用的是Gitee


  • 小工具

    • C++参考手册: link
    • StackOverFlow: link
      StackOverflow是一个与程序相关的IT技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容
    • C++库函数 : link



  • 端正态度

  • 不做伸手党,遇到问题自己先实验解决
  • 持之以恒,不在一朝一夕
  • 多动手,编程并非纸上谈兵
C语言概述

什么是C语言?

   第一个C语言程序
数据范例
变量、常量
字符串+转义字符+解释
选择语句
循环语句
函数
数组
操作符
常见关键字
define 界说常量和宏
指针
布局体
  第一个C语言程序

  
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    printf("hello world\n");
  5.   return 0;
  6. }
  7. //main函数是程序的入口
  8. //一个工程中main函数有且仅有一个
复制代码
数据范例

数据范例解释字节char字符型1short短整型2int整型4long长整型4/8long long更长的整型8float单精度浮点型4double双精度浮点型8 注意:存在这么多的范例,实在是为了更加丰富的表达生存中的各种值。
变量 常量

·变量顾名思义是变化的量
·常量就是不会发生改变的量
稳固的值,C语言中用常量的概念来表示,变的值C语言中用变量来表示。
变量的界说方法
   int number = 150;
float weight = 45.5f;
char ch = ‘m’;
//界说变量首先要有变量的范例,其次是变量名,为其输入一个数值
//即为这个变量初始化
//任何一个变量在使用之前必须要先对它进行初始化。
//不初始化的话使用它就没有现实意义了。
  ·在现实编程中,风俗上在界说变量的时候就对它进行初始化,这是一个很好的编程风俗。
·但是按照 C89 标准,变量的界说只能在程序或复合语句的开头。如许那么很多在开头界说但到后面才会用到的变量,在界说的时候如何对它们进行初始化呢?
·此时风俗大将它们初始化为0,然后等后面真正用到它们的时候再重新赋值。
变量的分类
   

  • 局部变量
  • 全局变量
    当局部变量和全局变量可以重名
    重名局势部优先

  变量的作用域和生命周期

作用域
   作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
  

  • 局部变量的作用域是变量所在的局部范围。变量所在的"{}"之间,注意:不是main()函数里
  • 全局变量的作用域是整个工程。
  生命周期
   变量的生命周期指的是变量的创建到变量的烧毁之间的一个时间段
  

  • 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期竣事。
  • 全局变量的生命周期是:整个程序的生命周期。
  常量的分类



  • 字面常量

    • 就是自己输入的常量如:5,3.2

  • const 修饰的常变量

    • const int num =100;//此时num是常变量不能再为其赋值或修改

  • #define 界说的标识符常量

    • define MAX 100;//此时MAX就是100

  • 摆列常量
    *enum Sex
    {
    MALE,
    FEMALE,
    SECRET
    };
字符串+转义字符+解释

字符串

   “hello,world\n”
  这种由双引号引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
注:字符串的竣事标志是一个 \0 的转义字符。在盘算字符串长度的时候 \0 是竣事标志,不算作字符串内容。
  1. #include <stdio.h>
  2. //下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
  3. int main()
  4. {
  5.     char arr1[] = "hello";
  6.     char arr2[] = {'h', 'e', 'l','l','o'};
  7.     char arr3[] = {'h', 'e', 'l','l','o', '\0'};
  8.     printf("%s\n", arr1);
  9.     printf("%s\n", arr2);
  10.     printf("%s\n", arr3);
  11.     return 0;
  12. }
复制代码
  1. hello
  2. hello烫烫烫烫烫蘦ello
  3. hello
  4. C:\c语言2\bit-c-learning\12_14\Debug\12_14.exe (进程 21976)已退出,代码为 0。
  5. 按任意键关闭此窗口. . .
复制代码
注:‘\0’是字符串竣事的标志,“ ”有一个隐藏的"\0",arr2没有则在打印的时候会自动去找,直到找到\0为止。
转义字符

转义字符释意\?在书写连续多个问号时使用,防止他们被解析成三字母词\’用于表示字符常量’\“用于表示一个字符串内部的双引号\用于表示一个反斜杠,防止它被解释为一个转义序列符。\a告诫字符,蜂鸣\b退格符\f进纸符\n换行\r回车\t程度制表符\v垂直制表符\dddddd表示1~3个八进制数字,例如:\130X\xdddd表示2个16进制数字。例如:\x30 0   printf(“%d\n”, strlen(“c:\test\328\test.c”))
//输出效果是14
c : \t e s t \32 8 \t e s t . c
  解释


  • 代码中有不需要的代码可以直接删除,也可以解释掉
  • 代码中有些代码比力难明,可以加一下解释笔墨


  • C语言风格的解释 /* xxxxxx * /
    缺陷:不能嵌套解释
  • C++风格的解释 //xxxxxxxx
    可以解释一行也可以解释多行
选择语句


   if——else语句
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         printf("你打算怎样学习编程?\n");
  5.         printf("每日刷题:1;每日摸鱼:0\n");
  6.         int n = 0;
  7.         while(scanf("%d", &n)!=EOF)
  8.         {
  9.                 if (n == 1)
  10.                 {
  11.                         printf("掌握技术\n");
  12.                 }
  13.                 else
  14.                         printf("未掌握技术\n");
  15.         }
  16.         return 0;
  17. }
复制代码
  1. 你打算怎样学习编程?
  2. 每日刷题:1;每日摸鱼:0
  3. 1
  4. 掌握技术
  5. 0
  6. 未掌握技术
复制代码
循环语句

   while语句
for语句
do … while语句
  

函数

函数就是简化代码,代码复用,与数学上的功能类似
例如:加法,在main函数外部界说一个Add函数实现加法功能,在main函数里进行调用
  1. #include <stdio.h>
  2. int Add(int x, int y)
  3. {
  4.         return x + y;
  5. }
  6. int main()
  7. {
  8.         int x = 0, y = 0;
  9.         scanf("%d %d", &x, &y);
  10.         printf("%d", Add(x, y));
  11.         return 0;
  12. }
复制代码
  函数要有范例,函数名,还要传入需要的参数(参数需要注明范例,参数名任意,参数有实参和形参,在main函数里传入的是实参),函数如果在main函数之后界说,需要在main函数前声明。
  数组

   数组是一组相同范例元素的集合
  数组界说
   int arr[10] = {1,2,3,4,5,6,7,8,9,10};//界说一个整形数组,最多放10个元素
//数组可以在界说时初始化,也可以使用for循环将元素一个一个存入,输出也是可以使用for循环一个个进行输出
  操作符

操作符名符号算术操作符+ - * / %移位操作符>> <<位操作符& ^ l赋值操作符= += -= *= /= &= ^= I= >>= <<=单目操作符! - + & sizeof ~ - - ++ *关系操作符> >= < <= != ==逻辑操作符&& II条件操作符exp1 ? exp2 : exp3逗号表达式exp1, exp2, exp3, …expN下标引用、函数调用和布局成员[] () . -> 常见关键字

1234autobreakcasecharconstcontinuevolatiledefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidwhile   在C语言中:
static是用来修饰变量和函数的
  

  • 修饰局部变量-静态局部变量
    让静态局部变量出了作用域依然存在,到程序竣事,
  • 修饰全局变量-静态全局变量
    一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。
  • 修饰函数-静态函数
    一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用
  define界说常量和宏

   //define界说标识符常量
#define MAX 1000
//define界说宏
#define ADD(x, y) ((x)+(y))
  1. #include <stdio.h>
  2. #define MAX 100
  3. #define ADD(x, y) ((x)+(y))
  4. int main()
  5. {
  6.         int sum = ADD(5, 6);
  7.         printf("%d\n", sum);
  8.         sum = MAX * ADD(5, 5);
  9.         printf("%d\n", sum);
  10.         return 0;
  11. }
复制代码
  1. 11
  2. 1000
复制代码
指针



  • 内存
    内存是电脑上特别重要的存储器,盘算机中所有程序的运行都是在内存中进行的 。
    以是为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
    为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地
    址。
变量都有地址,取出其地址:
  1. int main()
  2. {
  3. int num = 5;
  4. &num;//取出num的地址
  5. printf("%p\n", &num);//打印地址,%p--以地址的形式打印
  6. return 0;
  7. }
复制代码
  那地址如何存储,需要界说指针变量
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int num = 10;
  5. int *p = &num;//p为一个整形指针变量
  6. *p = 20;
  7.     return 0;
  8. }
复制代码



  • 指针大小
   指针说到底就是与地址挂钩,存的指向的是地址
因此指针大小在32位平台是4个字节,64位平台是8个字节。
无论变量是什么范例,无论是整型指针还是字符型指针,在一个平台上指针的大小是稳固的
  布局体

   布局体是C语言中特别重要的知识点,布局体使得C语言有能力形貌复杂范例。
比如形貌弟子,弟子包含: 名字+年龄+性别+学号 这几项信息。
这里只能使用布局体来形貌了。
  1. //定义结构体变量
  2. struct Stu
  3. {
  4.     char name[20];//名字
  5.     int age;      //年龄
  6.     char sex[5];  //性别
  7.     char id[15]; //学号
  8. };
复制代码
  1. //打印结构体信息
  2. struct Stu s = {"大力", 20, "女", "2015070127"};
  3. //.为结构成员访问操作符
  4. printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
  5. //->操作符
  6. struct Stu *ps = &s;
  7. printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
  8. >id);
复制代码
末了的话

深入学习C语言要耗费很多时间更要有刻意有毅力,这篇主要是开端认识C语言,并没有深入展开,以是有些方面只是蜻蜓点水。希望这篇文章可以对刚刚打仗编程的人有些帮助。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表