黑马程序员—C语言基础语法的学习

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

以下为自己的学习总结与学习笔记,可能有不全面不到位的地方,也欢迎大家一起分享指正。

C语言是世界上最流行、使用最广泛的高级程序设计语言之一,其主要的用途包括

1、编写系统软件、图形处理、单片机程序、嵌入式系统开发

2、编写游戏外挂

3、编写android程序

4、编写iOS程序

任何一个C语言的程序都是由一个或者多个程序段组成的,而这些有着自己功能的程序段就是函数了,说到函数,就不得不提main函数了,main函数似乎在计算机语言里是个常客,之前学过的C++,Java,可能这也就是计算机语言相通的地方。C语言的程序执行,首先是通过main函数,并且也只会执行main函数。

main函数中调用其他函数,printf函数往屏幕上输出信息,#include <stdio.h>调用系统自带的函数。

在C语言中执行程序为:1、编写代码  2、编译,即用clang编译器把代码编译为计算机能识别的0和1(指令:cc -c) 生成.o文件  3、链接,即把.o的目标文件跟系统自带的函数库合并在一起生成一个可执行文件  (链接器,指令:cc 文件名.o)

注:编译会检查语法是否正确,不会管程序是否能正常运行。链接时会考虑程序是否会正常运行(是否有main函数)

一、变量的作用域问题

变量的作用域是从定义变量的那行代码开始,一直到函数结束。

 1 #include <stdio.h>
 2
 3 int test()
 4 {
 5      int a = 100; //变量a在test函数中定义,作用域到test函数中结束
 6      return 0;
 7 }
 8
 9 int main()
10 {
11      test();
12      a = 200; //这么写不行,变量a作用范围从定义开始到test函数结束,不可访问test函数里的变量a
13      return 0;
14 }

随着学习的深入,重新理解变量的作用域是从定义变量的那行代码开始,一直到所在的代码块结束,而代码块的作用则是及时回收不再使用的一些变量,为了提升性能。

对于变量的作用域问题的一个例子:

 1 #include <stdio.h>
 2 int main()//main函数中多个代码块
 3 {
 4      int a = 20;
 5      int score = a + 100;
 6      printf("%d\n", score);//输出120
 7
 8      {
 9           int score = 50;
10           {
11                 score = 10;//在此代码块中未定义变量score,因此会在其外层代码块中寻找并将其值赋值10.
12                 printf("%d\n", score);//此处输出10.
13           }
14                 a = 10;   //此处同上,将外层代码块中的a赋值为10
15      }
16
17      {
18             score = a + 250;//上层代码块执行完就销毁了,a=10,因此外层代码块中score现在赋值为260.
19             int score = 30;
20             printf("%d\n, score");//此处就近输出30
21      }
22      printf("%d\n", score);// 虽然上层代码块已经销毁但赋值了score为260,此处输出260.
23      return 0;
24 }
时间: 2024-11-03 01:36:53

黑马程序员—C语言基础语法的学习的相关文章

黑马程序员 ---- C 语言基础语法

C 语言基础语法 C程序是由函数组成. C程序的入口是一个名字叫做 main 的函数,简称main函数. 不管程序中有多少函数,都是先执行main函数. 1 #include <stdio.h> 2 3 int main(void) 4 5 { 6 7 return 0; 8 9 } 1.编写 2.编译 cc -c 文件名.c 生成 .o 文件 3.链接 cc 文件名.o      // 2.3结合在一起:  cc 文件名.c -o 文件名 4.运行 ./a.out // ./文件名 C语言中

黑马程序员——C语言——基础语法

首先学的是C语言的基础语法,主要分为关键字.标示符.注释.数据.常量.变量. 一.关键字 1   关键字是指在C语言中系统默认的有特殊意义的字符 2   关键字全部是小写字母表示,总共32个关键字(主函数[main]中int .return),如下: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned

黑马程序员——c语言基础语法(二)

指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值.未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误.在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址. 两个有关的运算符: &:取地址运算符. *:指针运算符(或称“间接访问” 运算符). C语言中提供了地址运算符&来表示变量的地址.其一般形式为:&变量名: 如&a表示变量a的地址,&b表示

黑马程序员——c语言基础语法

1.变量名与变量值 变量名实际上是一个符号地址.程序编译时,系统给变量开辟该变量对应类型所需的内存空间(用于存储变量值),然后由系统建立一个从变量名到该内存空间的首地址的映射,这样就可以通过变量名访问到变量值了.  变量名由数字.字母和下划线组成.大小写敏感,不能以数字开头.变量名的长度(字符个数)没有硬性的规定,只是不同的C编译器可能会有不同要求.不过这应该不是大家要考虑的问题, 相信没有人会写那么长的变量名才对 C语言中,使用变量之前必须定义该变量,否则编译出错.定义变量时须写明变量所属类型

黑马程序员————C语言基础语法二(算数运算、赋值运算符、自增自减、sizeof、关系运算、逻辑运算、三目运算符、选择结构、循环结构)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一讲  算数运算 C语言一共有34种运算符,包括了常见的加减乘除运算 1.加法运算+ 除开能做加法运算,还能表示正号:+5.+90 2.减法运算- 除开能做减法运算,还能表示符号:-10.-29 3.乘法运算* 注意符号,不是x,而是* 4.除法运算/ 注意符号,不是÷,也不是\,而是/ 整数除于整数,还是整数.1/2的值是0,这个并不是二分之一 5.取余运算% 什么是取余:两个整数相除之后

黑马程序员——c语言基础语法(三)

C语言字符数组的初始化 1.字符数组的定义与初始化 (1),第一种方式:    char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};  即把10个字符分别赋给str[0]到str[9]10个元素注意:如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0' ). (2),第二种方式: char str[ ]={"I am happy"}; 

黑马程序员-c语言基础:各种数据类型的输出占位符

c语言中的输出操作相对java来说是比较麻烦的,每种数据类型的输出都有各自的占位符: 下面是各种数据类型的输出占位符: short/int : %d int a = 1; printf("这个整数是:%d", a); long: %ld; (long 是int得修饰,不能算是一种单独的数据类型,只是比int多了四个字节的存储空间) long long: %lld char : %c float/double : %f  float默认是6位小数输出:可以在%f中控制:例如:%.2f:输

黑马程序员-C语言基础:指针类型与指针和数组、字符串的关系

//指针变量就是用来存储地址的,只能存储地址 格式:  int  *p;  这个p为指针变量:指针变量占8个字节 类型是用来说明这个指针指向的类型: 比如上边的int代表这个指针变量会指向int类型的存储空间: int *p = &a;//这样一句可以写,此时的*只是一个标志,表示这个*只是表示p是个指针: *p = &a;//这样写就错了:此时*p表示取p指向的空间的值: 指针疑问:指针既然都占据8个字节,那么为什么要划分类型, 是因为当用*p指针取值或者赋值的时候,知道该取几个字节,比

黑马程序员-C语言基础:数组和字符串

数组:数组的定义注意点 数组初始化正确写法: int args[5] = {1,23,32,4,5}; int args[5] = {12,23}; int args[5] = {[3]=23, [4]=13};//这种写法也可以,直接给其中角标为3和4的赋值 int args[] = {12,23,32};//中括号中没写数组大小,在大括号中一定要写具体数值 int args['A'] = {2,34,5}; 错误写法: int args[];//这样编译器不知道给你开辟多大的内存空间 int