C语言变量的基本使用二

C语言编程基础

1.C语言功能:类似英语,英语是实现人和人交流沟通的工具

C语言实现人和计算机交流沟通的工具

除了C语言,还有C++,JAVA,Python,Go,Rust等

2.C语言背景简介(了解)

1972年由丹尼斯里奇发明C语言

1978年出版《the c programming language》,预示着C语言正式走向世界

1989年发布C89标准(类似普通话)

1999年发布C99标准(扩展功能)


3.编写人生第一个标准C程序

具体实现步骤:

mkdir -p /home/tarena/stdc/day02

cd /home/tarena/stdc/day02

vim helloworld.c 添加如下内容


/*

这是我的第一个C语言程序

我很激动

*/

//这个仅仅作为一个测试

#include <stdio.h>

int main(void){

printf("你好,世界.");

printf("hello,world.\n");

return 0;

}

保存退出

继续执行以下命令:

gcc helloworld.c 作用:编译程序

ls -lh 此时多了一个a.out文件

./a.out 作用:运行a.out程序


4.总结:C程序基本编程规范

a)C程序对应的文件有两种:

源文件:以.c结尾,例如:helloworld.cd

头文件:以.h结尾,例如:stdio.hello

任何C程序必须有一个源文件,头文件可以有,可以没有


b)C程序注释(就是程序diamante的解释说,给程序员看,不参与程序的编译和运行)

1./*中间就是要解释说明的注释内容*/

  优点:可以注释多行

  缺点:不能嵌套注释,例如:/*我是大神 /*我是小神*/ */ (错误语法)

2.//注释内容

  有点:可以嵌套注释,例如://////我是大神

  缺点:不能多行注释

c)C程序要包含一个别人写好的头文件(就是将头文件的内容全部拷贝过来),格式有两种,

1.语法:#include <头文件名>

  例如:#include <stdio.h>

  语义:告诉gcc编译器将来默认到linux系统的/usr/include目录下找stdio.h开头的文件

找到之后将这个头文件的内容全部拷贝过来

2.语法:#include "头文件名"

  例如:#include "stdio.h"

  语义:告诉gcc编译器现在当前目录下找stdio.h头文件,如果找到了,那就包含拷贝

如果没有找到,再去/usr/include目录下找头文件stdio.h,如果找到那就包含拷贝

如果还没找到,报错

d)C程序必须要包含一个唯一的主函数,名称必须交main

  并且main函数的原型(),必须如下:

  int main(void){

//代码内容

  }


  或者:

  int main(void)

  {

//代码内容

  }


  结论:将来运行C程序时,linux操作系统之人main函数,必须从main函数开始从上往下挨个执行


e)C程序的主函数main中(括号里面的内容)编写规范:

  1.每条语句后面必须跟分好";"

  2.执行顺序:从上往下挨个执行

  3.只要遇到或者执行return这个关键字,C程序立马结束

return后面可以跟一个数字,例如:

return 0; 表示告诉操作系统,此程序执行结束了并且执行的很正常

return -1; 表示告诉操作系统,此程序执行结束了但是执行的时候有点问题

例如:main函数的形式如下

int main(void){

printf("你好,世界.");

printf("hello,world\n");

return 0;

}


f)人生认识的第一个标准C库函数printf(就是大神写好的函数,我们直接拿来用即可)

  1.标准C库函数使用,调用语法:函数名(信息);

  2.printf函数的功能:向显示器打印输出信息

  3.调用格式:printf("要输出打印的信息\n");

注意:'\n':表示回车换行,就是打印完信息之后将光标换到下一行

如果没有'\n',光标继续停留在本行

例如:

printf("abc");

printf("efg\n");

效果:abcdefg

printf("abc\n");

printf("efg\n");

效果:

abc

efg

  4.注意:要想调用大神的printf函数,必须开头包含头文件stdio.

  5.printf利用占位符可以打印输出指定的数字信息

  %d占位符功能:按照整数形式打印输出一个数字

  例如:printf("1 + 1 = %d\n",2); 语义:将来数字2会放到%d这个位置,然后将1+1=2这个信息输出到显示器上

printf("1 + 1 = %d\n",1+1); 语义:先算1+1=2,然后把计算的结果放在%d这个位置最后打印1+1=2

  5.大名鼎鼎的gcc编译器(作者:GNU软件之父理查德斯托曼)

  a)gcc编译器功能:类似翻译官,将C程序源文件和头文件翻译生成计算机能够识别的可执行文件

类比:中文版三国(源文件)----->翻译官(gcc编译器)------>英文版三国(计算机识别的可执行文件)

  b)gcc编译源文件流程三步骤:

1.预处理:就是将源文件中要包含的头文件,例如:stdio.h全部拷贝过来

  此过程简称预处理

  对应的gcc命令选项:-E

  预处理的命令:gcc -E -o 预处理文件.i 源文件.c

  注意:-o 后面只跟要生成的新文件

  语义:对源文件进行预处理生成预处理文件.i


2.只编译不链接:就是将预处理文件进行单独翻译生成计算机能够识别的可执行文件

但此时生成的文件不包含大神的代码,例如:printf

所以此程序此时还不能运行

对应的gcc命令选项:-c

对应的gcc命令格式:gcc -c -o 可执行文件.o 预处理文件.i

3.链接:就是讲大神的各种代码,例如printf和自己的程序合并起来,合并的专业术语叫链接

最终生成计算机能够执行的一个完整程序

对应的命令:gcc -o 可执行文件 可执行文件.o

最终生成可执行文件

  c)务必掌握gcc编译源文件的三种方式:

1.流氓发:gcc helloworld.c 默认都会生成a.out(这个名字做不到见名知意)

2.分步编译:

gcc -E -o helloworld.i helloworld.c //先预处理

gcc -c -o helloworld.o helloworld.i //然后只编译不链接

gcc -o helloworld helloworld.o //最后链接大神的printf代码,最终生成helloworld可执行程序

./helloworld //运行程序

3.一步到位

gcc -o helloworld helloworld.c //直接对源文件进行翻译生成可执行文件

  心里要明白:gcc还要做三件事,只是看不到而已

./helloworld

案例:利用以上三种方法,对刚才的helloworld.c进行编译运行

------------------------------------------------------------------------------------------------------------------

第三课:C语言(C程序)的变量

1.务必掌握计算机内存相关的概念

  内存特点:暂存CPU运算之前的数据和运算之后的数据,还有暂存程序,任何程序都是在内存中存储,

所以势必要消耗内存,速度快,掉电数据丢失

结论:任何程序最终都是玩内存

  字节(Byte):计算机将内存分成一格一格,每一格用来存储一格数字,每一格的专业术语叫字节

注意Byte的简称:B

换算公式:1KB = 1024B

  1MB = 1024 * 1024KB

  1GB = 1024MB = 1024 * 1024KB = 1024 * 1024 * 1024B


  地址(Address):计算机给内存的每个字节指定一格固定的唯一的编号,此编号从0开始,后续地址加1即可

此编号的专业术语叫地址

切记:不管在哪里,只要知道了内存的某个字节的地址,将来就可以通过地址对内存进行访问(读或者写)

类似:不管快递小哥在哪里,快递小哥知道你的地址,就可以给你送快递

  存储区(Buffer):计算机将1个字节或者多个连续的字节形成一个存储单元用来存储数字

例如:300亿这个数字如果用1个字节来存储显然这个数字太大了,1字节内存存不下

  可以用4字节的连续内存来存储这个数字

  首地址(base address):存储区中第一个字节的地址又称首地址


  Q:C程序如何分配内存空间来存储数字呢?

  A:切记,任何程序要想访问内存,必须先分配获取到内存才能访问

如果没有分配获取到内存,直接去访问:操作系统直接将程序干掉,杀死

C程序通过定义变量来实现分配的内存!

2.变量功能:就是给C程序分配内存空间,一旦分配内存臭狗,程序就可以对内存进行存储数字还可以修改存储的数字

3.定义变量(又称分配内存)语法格式:

  数据类型 变量名 = 初始值(可以有,可以没有);

  例如:int a = 250;

  说明:'int' 它是一个关键字,它对应一种数据类型,表示将来可以分配4字节的内存空间

'a' 变量名

'250' 就是给分配的内存放了一个数字250

  结论:这条语句的结果是分配了4字节内存空间并且这块内存空间放了一个数字250

  例如:修改变量的值(也就是修改内存存储的数字)

int a = 250;

a = 520; //修改变量a的值为520,也就是将内存中原先的数字250修改为520,其中"="就是重新赋值的意思

打印变量的值(打印内存中存储的数据值):printf("%d\n",a); //将变量a的值打印输出

4.定义变量的四种形式:

  a)只定义(只分配内存)不初始化(不赋初始值)

int a; //此时变量a的值或者对应的内存存储的数字是一个随机乱七八糟的数字

  b)定义并且初始化

int a = 250;

  c)连续只定义不初始化多个变量(逗号分隔)

int a,b,c; //同样变量的值是乱七八糟的随机数

  d)连续定义并且初始化多个变量

int a = 100, b = 200, c = 300;

小案例:演练变量的使用

实验步骤如下:

cd /home/tarena/stdc/day02

vim var.c

gcc -o var var.c //也可以分步编译

./var

5.标识符命名规则

  a)标识符:就是变量名(例如:a,b,c,d等)或者函数名(例如:main,printf等)

  b)标识符命名规则:

1.首字符不能是数字,只能是字母或者下划线,区分大小写

  例如:int 2var; //gcc报错

int v2ar; //可以

int _2var; //可以

2.尽量做到见名知意

  int a = 18; //你能知道a代表年龄的意思吗?

  int age = 18; //age就是年龄的意思

  int weight = 200; //体重

  int height = 200; //身高


3.驼峰(windows程序员)和下划线(linux程序员)

  驼峰:int nAge = 19;

int GreateWindows = 250;

  下划线:int Greate_windows = 250;


4.C语言的关键字不能使用

  例如:int,return,main,void等不能用

  例如:int int = 250; //gcc报错

int void = 250; //gcc报错

6.C语言的基本编程风格:(不强求,其他风格都要根据公司来定)

  a)各种该

该有空格的加空格

该对齐的对齐

该独占一行的独占一行

该有TAB键的就添加TAB键

例如:

int main(void){printf("hello,world\n");return 0;} //理论上可以,实际阅读起来要命!

应该:

int main(void){

//独占一行

//对齐

printf("abc\n");

printf("efg\n");

//独占一行

}

  b)代码尽量写在屏幕左侧的2/3区域,右侧1/3建议留白,如果超过换行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342