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

1、变量名与变量值

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

C语言中,使用变量之前必须定义该变量,否则编译出错。定义变量时须写明变量所属类型。程序编译时,会根据变量的类型来决定为该变量开辟多大的内存空间,同时还可以检查运算的合法性。比如实型数据之间不能做求余数的操作。

2、整型数据

C语言中,整型数据的类别有三种:short,int,long;属性有两种:signed,unsigned。共有六种组合。 
    
    整型数据类型的长度:C标准没有硬性规定每种类型的长度,只是规定:long的长度要不小于int;short的长度不大于int。一般的C编译器都会以一个机器字的存放一个int型数据。

3、变量初始化

变量的初始化不是在编译期间完成内存空间的分配(只有静态变量和外部变量是在编译期间初始化),而是在程序运行时执行函数时才赋值。

4、格式输入与输出

%md,%mc,%ms(m为正整数):m的大小决定了输出内容的宽度,当输出内容的长度小于m时,输出内容右对齐,左补空格;当输出内容的长度大于m时,输出内容不受m的限制,原样输出。 
    
    %-md,%-mc,%-ms:用法同上,只是输出内容左对齐,右补空格。 
    %m.nf,%m.ns :m控制输出内容的总宽度,对于实型数据来说小数点也算一位,当输出内容的实际宽度大于m时突破m的限制;%m.nf中的n控制小数位的位数,%m.ns中的n表示截取字符串的左n位,若n小于m则左补空格。

%0md:输出m位的整型数值,如果被输出的数据位数小于m时,前补0

5、C语言的变量的存储类型

C语言的变量存储类型有很多种分法,根据生命周期来分可分为:动态变量和静态变量;根据使用域来分可分为:局部变量和全局变量(又叫内部变量和外部变量)

a)、动态变量和静态变量。

动态变量变量所占空间是静态的,即程序自始至终一直存在。代码表现形式为关键字"static"+变量类型名+变量名,静态变量的初始化是在编译期完成的,且只初始化一次,程序执行时不再对静态变量进行赋初值。

b)、局部变量和全局变量(又叫内部变量和外部变量)

局部变量定义在函数体外部的变量,所以又叫外部变量。其作用域为该全局变量的声明处一直到程序结束。与局部变量不同的是,全局变量存在静态存储区,在编译期就被分配空间。

外部变量可以用"extern"关键字来扩展作用域。例如:一int型的外部变量A被定义在程序的中部,那该外部变量的作用域是不包含其以上的函数的,如果在文件开头使用"extern A"来声明该外部变量,那该外部变量的作用域变会被扩大到整个文件。使用"extern"还可以把外部变量的作用域扩大到另外的文件中。例如:在a.c中有一外部变量A,那在b.c中使用extern A声明后A在b.c中也可以使用了。

6、关于指针和指针变量
指针 :  指针及内存地址。对于32位机来说,内存地址需要32bit也就是4Byte的二进制数来表示,所以指针是一个4Byte的二进制数。
指针变量 : 用于存储指针的变量,也就是说指针变量的内容是一个内存地址是一个4Byte的二进制数。无论指针变量指向的是什么类型的数据,它的值永远只会是一个4Byte的二进制内存地址。
存储的内容都是长度一样的内存地址,那为什么声明的时候还要写明该指针变量的类型呢?我们知道不同类型的数据在内存中占用的字节数是不一样的,所以通过指针访问数据时
指针变量移动的步长也是不一样的。例如:一个指针变量p指向了某整型数组的第一个元素a[0],此时我想用这个指针变量p来访问a[1]时只需要将p+1也就是*(p+1)就能取得a[1]的
值。我们在编码的时候让p+1而实际上内存地址移动了4个字节(一个整型数据所占的内存空间),也就是说p+i代表内存地址要移动p+i*c(c为p指向数据类型所占的内存空间的字节数),
所以如果指针变量没有类型的话遇到这种情况时内存地址就不知道该移动多少字节才能正确访问到一下数据。

接下来一些很基础, 但是可能要注意一下的新手小提示 :

在用scanf和printf函数输入和输出时,一定要记得int跟%d对应,long跟%ld对应,float和double%f对应

1. 每条语句结束时末尾加分号, 而不是每行末尾加分号.

2. 在用scanf 和 printf 函数输入或输出时, 类型与格式控制符(如 int 对应 %d)要对应好. 否则可能产生输出与数据不一致.

3.  使用scanf函数时, 输入时的格式要与双引号中的格式一致, 因此双引号中最好只出现各种格式控制符

4. 在数值运算, 要注意防止数据的溢出. 一旦超过类型最大值, 便可能导致数据丢失

5.  注意各种运算符的优先级, 需要时可以加 () 来保证运算顺序满足要求.

时间: 2025-01-08 05:09:15

黑马程序员——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语言基础语法的学习

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 以下为自己的学习总结与学习笔记,可能有不全面不到位的地方,也欢迎大家一起分享指正. C语言是世界上最流行.使用最广泛的高级程序设计语言之一,其主要的用途包括 1.编写系统软件.图形处理.单片机程序.嵌入式系统开发 2.编写游戏外挂 3.编写android程序 4.编写iOS程序 任何一个C语言的程序都是由一个或者多个程序段组成的,而这些有着自己功能的程序段就是函数了,说到函数,就不得不提mai

黑马程序员————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