C语言第一节 C语言程序与开发工具
开发工具的选择
- 可以用来写代码的工具:记事本、UltraEdit、Vim、Xcode等
- 选择Xcode的原因:苹果官方提供的开发利器、简化开发过程、有高亮显示功能
- 使用Xcode新建一个C程序的源代码文件(拓展名为.c或者.C)
- 打开Xcode

- 新建文件

- 选择文件的类型

- 输入文件名和选择文件的存放目录

- 新建完毕

- 删掉文件里自动生成的所有内容,从零开始

代码的编写
程序结构
- 先C程序的结构:由函数组成
- 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为"函数"。所以,你可以说C语言程序是由函数构成的


- 函数的基本概念
- 函数名:一个程序中由无数个函数组成,每个函数都有自己的名称
- 调用(执行)函数:根据函数名就可以调用对应的函数,执行相应的功能
- C程序的入口
- C程序的入口是一个名字叫做main的函数,简称main函数
- 不管整个程序中有多少个函数,都是先执行main函数
编写程序
- 编写main函数(大括号{ }中的内容是函数体)
int main()
{
return 0;
}
- 编写多个函数,并且进行调用
int test()
{
return 0;
}
int main()
{
test();
return 0;
}
- 使用printf函数输出内容到屏幕上
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
编译
- 什么是编译:将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 指令
- 修改文件内容之后,一定要重新编译、链接,再运行
- \n的作用:回车换行
其他clang指令
- 修改可执行文件名称:cc xxx.o -o 文件名
- 一起编译、链接:cc xxx.c
初学者常见错误
- 不写分号、用了中文分号
- 字符串少了双引号、或者用了单引号,双引号里面又有双引号
- 代码没有写在main函数内部、return之前
- 文件拓展名不是.c或者.C,比如.txt
- 用绝对路径编译文件,注意目标文件生成的地方
总结
- 整个程序的运行过程

- 总结常见文件的拓展名
- .c是C语言源文件,在编写代码的时候创建
- .o是目标文件,在编译成功的时候产生
- .out是可执行文件,在链接成功的时候产生
- 总结clang指令
- 编译:cc –c xxx.c
- 链接:cc xxx.o
- 编译、链接:cc xxx.c
- 运行可执行文件:./a.out
- 开发中会遇到哪些错误?如何解决?
- 语法错误,可以通过编译器的报错信息解决
- 逻辑错误,需要耐心调试程序
- 学习建议
- 学编程并不是学英文
- 程序的可读性
- 初学者不要过于寻根问底
习题
用2种不同的代码方式输出下面的图案
************
** itcast **
************
内容来源:传智播客李明杰老师授课内容
C语言第一节 C语言程序与开发工具的更多相关文章
- Mac上微信小程序官方开发工具卡死的问题
Mac上微信小程序官方开发工具打开后卡死,无法操作,也关不掉,解决方案: 三步: 1.在应用中删除“微信web开发者工具” 2.删除一下几个配置和缓存文件: 1.-/Library/Applicati ...
- C语言 第一章 C语言简介
一.C语言介绍 C是一种通用的编程语言,广泛用于系统软件与应用软件的开发.于1969年至1973年间,为了移植与开发UNIX操作系统,由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计.开发 ...
- 微信小程序——安装开发工具和环境【二】
准备 开发工具下载 获取APPID 安装工具 安装 接受协议 选择安装位置 等待安装完成 安装完成 选择项目 选择小程序 填写信息 确定 无误后,点击确定进入开发页面 建立普通快速启动模板界面
- Scala入门到精通——第一节 Scala语言初步
本节主要内容 Scala简单介绍 为什么要学习Scala Scala语言初步 1. Scala简单介绍 Scala(Scala Language的简称)语言是一种能够执行于JVM和.Net平台之上的通 ...
- opencart后台操作--第一节 多语言篇---中文语言包
参考:http://www.cnblogs.com/404bozhu/p/5015108.html#3584448 OpenCart简体中文语言包 OpenCart V2.3.0.x 版权所有:www ...
- 03_java基础(三)之第一个程序与开发工具的安装
1.第一个Java程序 ① 找一个特定的放代码的地方 ② 新建一个文本文档 --> 改名 Hello.java 注意 : 必须先把文件的后缀名都显示出来 不同的操作系 ...
- 微信小程序及开发工具介绍
http://mp.weixin.qq.com/wiki 这里下载开发者工具
- [微信小程序]微信开发工具出现 1not found 编译 .wxss文件信息错误怎么办?
错误代码: "1not found 编译 .wxss文件信息错误",如 下图 出现场景: 1.一般出现在安装新版本之后出现的状况,可能由于版本之间的兼容导致 解决办法: 1.重装整 ...
- 【微信】微信小程序 微信开发工具 创建js文件报错 pages/module/module.js 出现脚本错误或者未正确调用 Page()
创建报错pages/module/module.js 出现脚本错误或者未正确调用 Page() 解决方法: 在js文件中添加 Page({ })
随机推荐
- CSS计算样式的获取
一般来说我们获取CSS的样式的时候会优先采用Elment.style.cssName 这种方法,这种方法类似于对象设置get,set属性获取,例如Elment.style.cssName是获取,Elm ...
- support vector regression与 kernel ridge regression
前一篇,我们将SVM与logistic regression联系起来,这一次我们将SVM与ridge regression(之前的linear regression)联系起来. (一)kernel r ...
- JavaScript相关图书推荐
JavaScript语言精粹(修订版) 作 者 Douglas Crockford(道格拉斯·克罗克福德) 著:赵泽欣 等 译 出 版 社 电子工业出版社 出版时间 2012-09-01 版 ...
- [转] Web前端优化之 Server篇
原文链接: http://lunax.info/archives/3093.html Web 前端优化最佳实践第二部分面向 Server .目前共计有 6 条实践规则.[注,这最多算技术笔记,查看最原 ...
- SQL中以count及sum为条件的查询
在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询.比如user_num表: id user num 1 a 3 2 a 4 3 b 5 4 b 7 例1:查询出现 ...
- EasyMock(官方资料整理)
1.要求 EasyMock要求java1.5.0及以上版本. Objenesis (2.0+)必须在classpath中来执行class mocking. 2.使用Maven 在Maven中心库中可以 ...
- UVALive 7461 Separating Pebbles (计算几何)
Separating Pebbles 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/H Description http://7 ...
- ActiveX控件是什么?
一.ActiveX的由来 ActiveX最初只不过是一个商标名称而已,它所涵盖的技术并不是各自孤立的,其中多数都与Internet和Web有一定的关联.更重要的是,ActiveX的整体技术是由Micr ...
- JavaIO(03)字节流--OutputStream and InputStream
IO概述: IO流用来处理设备之间的数据传输 java对数据的操作是通过流的方式 java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流与字符流(编码表) 流按流向分为:输入流,输出流 ...
- Java NIO类库Selector机制解析(上)
一. 前言 自从J2SE 1.4版本以来,JDK发布了全新的I/O类库,简称NIO,其不但引入了全新的高效的I/O机制,同时,也引入了多路复用的异步模式.NIO的包中主要包含了这样几种抽象数据类型: ...