C语言-简介

前言

  • 什么是操作系统:操作系统是一种系统软件,用来管理计算机的软硬件资源。
  • 主流操作系统:

    移动便携式设备:Android、iOS、Windows Phone、Symbian(塞班)、Black Berry(黑莓) OS

    PC个人电脑:Windows、Mac OS、Unix、Linux

  • 什么是iOS:iOS是一款由苹果公司开发的移动操作系统(iOS运行在移动便携式设备上)
  • 什么是iOS开发:就是开发运行在iOS系统上的应用或游戏软件,如:QQ、淘宝、愤怒的小鸟等。
  • Mac OS文件系统:对文件进行管理的系统叫文件系统

  UNIX常用命令:

    查看命令的详细帮助: man 命令名       (比如要看看 ls 命令的详细用法,执行 man ls)

    pwd  (print work directory):打印当前目录(工作目录)     目录 == 文件夹

    cd   (change directory)

    cd /   进入根目录

    cd Users   进入用户目录

    cd tarena  进入用户的主目录(Home Directory)

    ls (list) :列出当前目录下的所有内容

      ls -a  //-a 即all,列出目录下的所有文件(包括以.开头的隐含文件)

      ls -l  //-l 列举文件的详细信息(文件名、权限、所有者、文件大小等)

    mkdir  创建目录(文件夹)

    touch  创建文件

    who  显示当前用户名

    clear 清屏

    touch xxx.m  新建xxx.m文件

    open xxx.m   打开xxx.m文件

    在根目录下使用ls列出所有内容:

      Applications  放所有的应用程序

      Library           应用程序需要的其库等内容

      Network        网络相关

      System          系统相关

      Users            用户的目录

  常用目录或路径:

    主目录(Home Directory):一个用户有一个自己的主目录,用户在此目录下拥有很高的权限。

    /   根目录(Root Directory):只有一个,代表整个硬盘

    特殊路径:   /  根路径        ./  当前路径        ../  上一级路径

    Desktop          桌面

    Documents      文稿

    Downloads      下载

    Library            其他

    Movies            影片

    Music              音乐

    Pictures           图片

    Public             公共目录

 注意:按一下tab键,可以自动补齐指令名称、文件夹、文件夹名等。

C语言的特点

  • 丰富的运算符
  • 丰富的数据类型
  • 可以直接操作硬件
  • 高效的目标代码
  • 可移植性好

C语言的用途

  • 编写系统软件、图形处理、单片机程序、嵌入式系统开发甚至是用于科研
  • 编写游戏外挂
  • 编写android程序
  • 编写iOS程序

C语言的编译器

  1. gcc  GNU Compiler Collection(GNU编译器套件),GNU组织开发的开源免费的编译器。

    ( gcc 原名为 GNU C Compiler,只能处理C语言,后来GCC很快地扩展,也可以处理C++、Objective-C、Java等其它语言)

  1. clang  开源的BSD协议的基于LLVM的编译器;苹果公司自己的编译器。

    (LLVM可以作为多种语言编译器的后台来使用,前端用clang)

C语言的版本问题

  1. 1983年美国国家标准局(American National Standards Institute,简称ANSI)成立了一个委员会,开始制定C语言标准的工作
  2. 1989年C语言标准被批准,这个版本的C语言标准通常被称为ANSI C
  3. 1999年,国际标准化组织ISO又对C语言标准进行修订,在基本保留原C语言特征的基础上,针对应该的需要,增加了一些功能,命名为C99
  4. 2011年12月8日,ISO正式公布C语言新的国际标准草案:C11

C语言的官方标准

  1. ANSI C / C89标准:1989年,美国国家标准协会(ANSI)发布了第一个官方标准(简称 C89标准 或 ANSI C)。
  2. C99标准:1999年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C语言的新标准。
  3. C11标准:2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C语言的新标准。

C语言程序的运行过程

一、编译:编译是由编译器来执行的,主要做的时语法检查工作;将C源程序翻译成计算机能识别的0和1。

  • 使用什么编译器:Xcode3使用GCC,Xcode4使用LLVM编译器(前端用clang)
  • 如何使用clang编译器编译程序:
    • 在终端中输入:cc  –c  文件名.c
    • 编译成功,会生成.o目标文件
  • 编译器的错误和警告功能
    • 如果代码有语法问题,编译器会直接报错。并指出错误的个数和具体行号。
    • 只要有1个错误,程序就不能编译成功,也不会生成.o文件
    • 警告信息只是编译器的一些建议,并不影响编译通过

二、链接:将自己编译好的.o目标文件和C程序库函数组合在一起,生成可执行文件。

    由链接器完成,clang编译器里面已经包含了链接指令

  • 在终端中输入:cc  文件名.o
  • 链接成功,会生成a.out可执行文件

三、运行:两种运行方式:

  • 直接双击打开a.out文件
  • 终端中使用 ./a.out 指令

  修改文件内容之后,一定要重新编译、链接,再运行。

  其他clang指令:

  • 修改可执行文件a.out的名称:cc  xxx.o  -o 新文件名
  • 一起编译、链接:cc  xxx.c

  

  整个程序的运行过程:编写源程序==>预处理==>编译器==>连接器==>可执行

  注意:gcc可换为clang(CC); gcc -E test.c 查看编译前文件内容 (-E的意思是:做预处理)

  1. 预处理:gcc -E test.c -o test.i (预处理的结果可以用-o的方式保存到一个文件test.i中)
  2. 编译:gcc -c test.i  //编译成功,会生成.o目标文件; 1,2可以合并:gcc -c test.c
  3. 连接:gcc test.o
  4. 执行:./a.out
  • 简写:gcc test.c  (1,2,3的合并)
  • 执行:./a.out

用Xcode创建项目

  

  • Product Name:产品名称
  • Organization Name:公司名称
  • Company Identifier :公司唯一标识,一般为公司官网网址的倒序
  • Bundle Identifier:产品唯一标识
  • Type(Language):项目语言类型

  C语言程序是由函数构成的,C程序的入口是main函数。函数内部代码的执行顺序,是从上到下执行的,如瀑布一样。

  错误类型:

  • 语法错误:编译器会直接报错
  • 逻辑错误:没有语法错误,只不过运行结果不正确

关键字

  C语言程序是由英文单词构成的,其中有些单词被C语言赋予了特殊含义,那么这些单词就是关键字。

  C语言的系统保留字(32个关键字)

  1. 基本数据类型(5个):void、int、float、double、char
    • void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果
    • int:整型数据,通常为编译器指定的机器字长
    • float:单精度浮点型数据,属于浮点数据的一种
    • double:双精度浮点型数据,属于浮点数据的一种
    • char:字符型类型数据,属于整型数据的一种
  2. 类型修饰关键字(4个):short、long、signed、unsigned
    • short:修饰int,短整型数据,可以省略被修饰的int
    • long:修饰int,长整型数据,可以省略被修饰的int
    • singed:修饰整型数据,有符号数据类型
    • unsigned:修饰整型数据,无符号数据类型
  3. 复杂类型关键字(5个):struct、union、enum、typedef、sizeof
    • struct:结构体声明
    • union:共用体声明
    • enum:枚举声明
    • typedef:声明类型别名
    • sizeof:得到特定类型或特定类型变量的大小
  4. 存储级别关键字(6个):auto、static、register、extern、const、volatile
    • auto:指定为自动变量,由编译器自动分配及释放,通常在栈上分配空间;修饰局部变量,默认省略不写
    • static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
    • register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
    • extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义
    • const:与volatile合称“cv‘特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
    • volatile:与cost合称“cv特性”,指定变量的值有可能会被系统或其他线程/进程改变,强制编译器每次从内存中取得该变量的值
  5. 流程控制关键字(12个)
    • 跳转结构(4个):return、continue、break、goto
      • return:用在函数体中,返回特定值(或void值,即不返回值),作用:结束函数
      • continue:结束当前循环,开始下一轮循环
      • break:跳出当前循环或switch结构
      • goto:无条件跳转语句
    • 分支结构(5个):if、else、switch、case、default
      • if:条件语句,后面不需要放分号
      • else:条件语句否定分支(与if连用)
      • switch:开关语句(多重分支语句)
      • case:开关语句中的分支标记
      • default:开关语句中的“其他”分支,可选
    • 循环结构(3个):for、do、while

        for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2…循环,其中2为循环条件

        do:do循环结构,do 1 while(2);的执行顺序是1->2->1…循环,2为循环条件

        while:while循环结构,while(1)2;的执行顺序是1->2->1…循环,1为循环条件

标识符

标示符就是程序员自己在程序中起的一些名字。(常见的是:变量的名称和函数的名称)

  1. 命名规则:(一定要遵守)

    • 只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成
    • 严格区分大小写,比如test和Test是2个不同的标识符
    • 不能以数字开头
    • 不可以使用关键字作为标识符
  2. 命名规范:(最好要遵守) 
    • 尽量起个有意义的名称,一般用英文单词,注意长度适中,可读性要强。
    • 如果标识符中含有多个单词,可以使用驼峰标识(除开第一个单词,后面每个单词的首字母都是大写):

      • firstName、myFirstName,或者使用下划线_来连接:first_name、my_first_name
    • 一般情况下,
      • 变量名:每个单词首字母大写;
      • 函数(方法):第一个单词的首字母小写,其它单词的首字母都大写。

          (如:UserName    PassWord   showMessage  isPrint)

数据

  1. 静态数据:是指一些永久性的数据,一般存储在硬盘中。
  2. 动态数据:是指在程序运行过程中,动态产生的临时数据,一般存储在内存中。
    • 当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。
    • 你可能会问:既然硬盘的存储空间这么大,为何不把所有的应用程序加载到硬盘中去执行呢?有个主要原因是内存的访问速度比硬盘快N倍。
  3. 数据的转换
    • 静态数据到动态数据的转换(也就是从磁盘加载到内存)
    • 动态数据到静态数据的转换
      • 如:手机拍照片存储到手机的硬盘上
  1. 数据的大小
    • 不管是静态还是动态数据,都是0和1组成的。
    • 数据都有大小,静态数据就会占用硬盘的空间,动态数据就占用内存的空间
    • 数据越大,包含的0和1就越多,比特位和字节
    • 计量单位:

        1 B = 8 bit

        1 KB = 1024 B, 1 MB = 1024 KB

        1 GB = 1024 MB, 1 TB = 1024 GB

变量

  • 概念

    是内存中的一片空间。用来保存程序运行期间的临时数据。

    有名字,有类型

    有名字,就可以重复使用

    变量的类型决定着变量占用多大的内存空间。

  • 声明(定义)变量

    int x; 定义一个int类型的,名字叫x的变量

  • 变量的初始化

    第一次给变量叫初始化

    最好不要使用没有初始化过的变量


#include <stdio.h>

int main() {

int x;//x是变量名,int是变量的类型

printf("x=%d\n", x); //x=1606422582,垃圾数据

x = 10; //将10保存到x中,第一次赋值相当于初始化

x = 20; //将20保存到x中,以后就叫给变量赋值

int y = 30;//定义变量的同时初始化

printf("y=%d\n", y);

return 0;

}

变量的类型

分两种:基本类型, 自定义类型

  1. 基本类型

    整形:

    有符号:可以是正数,也可以是负数。

      int     // signed int

      short int  短整形

      long int  长整形

      long long int

    无符号:只能是正数,不能是负数

      unsigned int

      unsigned short int

      unsigned long int

      unsigned long long int

    特殊整形:

      char

      unsigned char

    浮点型:全部是有符号

      float

      double

      long double

  1. 自定义类型: struct,  union, enum
  2. 数据的保存(二进制)

    1Byte = 8bit

    1KB = 1024Byte

    1MB = 1024KB

    …

  1. 类型的区别

    short int               2Bytes          16bit

    int                        4Bytes          32bits

    long int                     8Bytes          64bit(64位系统)   4Bytes(32位系统)

    long long int        16Bytes

  占用内存空间多,表示的数据的范围就广

  注意:int类型前面有其它修饰时,int可以省略。

  bool 表示布尔运算,只包含true和false两个数值。需要在文件中加入如下语句: #include <stdbool.h>

数据类型

对应内存区域,其值可变,变量有相应的类型和值。

变量类型分为字符型char、整数型int、浮点型float/double、指针、结构、联合等类型。

时间: 2024-12-17 06:30:44

C语言-简介的相关文章

lua脚本之lua语言简介以及lua的安装

本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解.  一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设计旨在项目中扩展功能,因此其内核小而稳定.在游戏开发中,Lua在用户界面.游戏数据管理.实时游戏事件管理.游戏人工智能.创建功能原型等方面具有强大的支持.Lua不能直接访问数据库,但可以通过整合其他语言组件来访问数据库:对于一些耗时要求更高效率的工作,一般交给更加底层的语言去完成,Lua只是起到整合

00-Java 语言简介

一.开发环境搭建: (一).JAVA语言简介: 1.JAVA语言简介: (1)什么是JAVA:Java是一种计算机编程语言.它是一种计算机编程语言.它是一种软件开发平台.它是一种软件运行平台.它是一种软件部署环境. (2)JAVA的历史:Java语言最早诞生于1991年. (3)JAVA体系: JAVA  SE(J2SE  标准版/桌面版) JAVA  EE(J2EE  企业版,构建大型的网站) JAVA  ME(J2ME 微型版,手机移动终端) (4)JAVA的开发环境: Eclipse ,M

Go 语言简介(下)— 特性

希望你看到这篇文章的时候还是在公交车和地铁上正在上下班的时间,我希望我的这篇文章可以让你利用这段时间了解一门语言.当然,希望你不会因为看我的文章而错过站.呵呵. 如果你还不了解Go语言的语法,还请你移步先看一下上篇——<Go语言简介(上):语法> goroutine GoRoutine主要是使用go关键字来调用函数,你还可以使用匿名函数,如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package main import "fmt" func

计算机程序和C++语言简介

C++程序设计 第一章 计算机程序和C++语言简介 1.计算机是一台能够存储并处理数据的电子设备,包含硬件和软件两部分. 2.计算机硬件由: 1)中央处理单元(Central Processing Unit,CPU) 2)内存(主存) 3)外存储设备(磁盘.光盘.磁带) 4)输入输出设备(显示器.键盘.鼠标.打印机) 5)通信设备(调制解调器.网卡) 这些设备通过总线连接起来.数据传输通过总线进行.[总线又分为控制总线.数据总线.地址总线] 3.CPU 1)cpu通常由两部分组成:控制单元(co

WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍

这篇文章主要介绍了WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍,WQL是指Windows管理规范查询语言,需要的朋友可以参考下 WQL就是WMI中的查询语言,WQL的全称是WMI Query Language,简称为WQL,翻译成中文好像可以成为Windows管理规范查询语言.熟悉SQL语言的朋友会感觉它和SQL非常相似. WQL其实非常简单,它有如下特点:1.每个WQL语句必须以SELECT开始:2.SELECT后跟你需要查询的属性名(我刚才对应SQL将其称之为字段名

ios-(1)C语言简介

1.先学C语言的原因 * oc基于C. * oc 跟 C的思想和语法很多地方不太一样,而且OC能和C混用. * C 是所有编程语言中的经典,很多高级语言都是从C语言中衍生出来的,比如 C++,C#.Objective-C.java等. 2.简史 * c语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作系统的基础). * 随着UNIX操作系统的成功,C语言也得到了大幅度地推广,被先后使用到大.中.小.微型主机上,至今还是世界上最流行.使用最广泛

R语言简介,环境配置与简易使用

R语言简介,环境配置与简易使用 首先,R是一种语言,同时也是一个开发环境. R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. 使用R,首先需要安装环境,http://cran.r-project.org有各个版本的安装包. 如图,是windows下64位的安装包: 安装完成后,打开界面 简易使用–命令行 R是一种区分大小写的解释型语言.在命令提示符(>)后,每次输入并执行一条命令 ,或者一次性执行写在脚本中文

scala语言简介及其环境安装

scala语言简介及其环境安装 简介: 1.运行在JVM 上,兼容java语言 Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行.所以Scala和Java是可以无缝互操作的.Scala 可以任意调用Java的代码. 2.当面向对象遇到了函数式编程(Object-Oriented Meets Functional) Scala 是面向对象的编程语言,同时也是函数式编程.(fp) 3. 静态类型语言(尽管看起来像动态类型) 动态类型语言 (弱类型语言)JavaScript, 定

Go语言简介

Go语言简介 - Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率. Go语言简介 Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率. Go语言语法灵活.简洁.清晰.高效.它对的并发特性可以方便地用于多核处理器和网络开发,同时灵活新颖的类型系统可以方便地编写模块化的系统.go可以快速编译, 同时具有垃圾内存自动回收功能,并且还支持运行时反射.Go是一个高效.静态类型, 但是又具有解释语言的动态类型特征的系统级语法. 下面是用go编写的"

python笔记一(语言简介、解释器、输入输出)

一.python语言简介 一顿狂吹python目前有多火.多NB,哈哈哈,不过用起来心情确实很舒畅. 解释性语言:缺点,运行速度慢. 二.python解释器 与C.C++.java不同,以上都需要先将代码文件编译,直接可以由python解释器执行代码 .py文件.现有的python代码解释器有很多种,在安装python3.5时,自带的有CPython,除此之外还有Ipython/Jpython等,Jpython可以将代码编译为java字节码. 三.python的输入和输出 # 输出 print(