黑马程序员——C语言基础(一)

简单的C程序

预处理指令:在编译之前执行的指令,一般以 # 开头。

#include:     系统自带的文件用<>,自己写的文件用 "" 。

.h称为头文件,是用来声明一些常用的函数,假如想使用这些函数,就必须包含这个头文件。

main函数:整个C程序的入口点,一个C程序有且只有一个main函数,C程序main函数不写返回值类型不报错,默认返回int类型。

1 #include <stdio.h>
2
3 main()
4 {}

开发和运行C程序的步骤

编写程序——>编译——>链接(目标代码 & C语言函数库)——>生成可执行机器代码——>运行程序

编译:将C的源程序翻译成计算机可以识别的二进制形式的目标文件代码,由C的编译器完成。编译成功会生成目标文件,文件名跟源程序文件名一样,扩展名为".obj"。如果一个项目中有多个C源文件,编译成功则会生成多个.obj目标文件。

链接:将所有有关联的.obj目标文件和系统提供的C库函数等组合在一起生成可执行文件的过程,称为"链接"。

函数

函数的分类

1.主函数(main函数)。

2.开发人员自定义的函数

3.C语言提供的库函数。

函数的声明和定义

因为C语言是从上往下编译的,所以调用函数时需要在main函数前做一个声明。函数声明可以放在 .h 文件中,函数定义放在 .c 文件中。

函数的形参和实参

在定义函数时,函数名后面的 () 中定义的变量成为形参(形式参数),在调用函数时传入的值称为实参(实际参数)。

注意:能不能#include .c文件?

不能。因为.c文件是定义函数的,#include .c文件会有函数重复声明的问题,导致在链接阶段报错。

数据类型

空类型:void

基本数据类型:int(整形),float(单精度浮点型),double(双精度浮点型),char(字符型)

构造类型:数组,struct(结构体),union(共用体),enum(枚举)

指针类型

变量

存储计算过程中所用的值,必须先定义类型再使用。

定义变量类型,就是为了给该变量分配适当的存储空间,以便存放数据。

在C语言中,声明一个局部变量后,没有经过初始化赋值时可以使用的。不过不建议这样做,因为系统会随意给该变量赋值,得到的是一个垃圾数据。变量在使用前还是应该先初始化再使用。

类型修饰符


short


短型


long


长型


signed


有符号型


unsigned


无符号型

1.  short和long可以提供不同长度的整形数,可以改变整形数的取值范围,short的取值范围是-32768~32767,long的取值范围是-2147483648~2147483647。

2.  数据的存储长度也会跟着变化。

3.  不同编译器环境下,取值范围和占用的长度是不一样的,ANSI \ ISO制订了以下规则:

  •   short跟int至少为16位(2字节)
  •   long至少为32位(4字节)
  •   short的长度不能大于int,int的长度不能大于long
  •   char一定为8位(1字节)

基本语句和运算

基本语句

循环语句:do while、while、for

条件语句:if、if-else、switch

goto语句

基本运算

算数运算符:+、-、*、/、%

关系运算符:<、<=、>、>=、==、!=

  • 在C语言中,关系运算的结果为"真"就返回1,"假"就返回0。
  • 在C语言中,任何非0值都代表"真",只有0值才为“假”。

逻辑运算符:&&、||、!

赋值运算符:=、+=、-=、*=、/=、%=

逗号运算符和逗号表达式:用逗号运算符连接起来的表达式称为逗号表达式;整个逗号表达式的值是最后一个表达式的值。

条件运算符和条件表达式(三目运算符):表达式1 ? 表达式2 : 表达式3

sizeof用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

注意:

1 size_t size = sizeof(‘A‘);

这时size打印出来为4字节,因为‘A‘会被转成 int 型再拿去求所占字节数。应更改为:

1 char d = ‘A‘;
2 size_t size = sizeof(d);

数组

地址

  1. 计算机中的内存是以字节为单位的存储空间,内存中的每一个字节都有一个唯一的编号。这个编号就称为地址。凡存放在内存中的程序和数据都有一个地址,也就是说,一个函数也有自己的内存地址。
  2. 当定义一个变量时,系统会分配一个带有唯一地址的存储单元来存储这个变量。变量存储单元的第一个字节的地址就是该变量的地址。

一维数组

  1. 一维数组的定义:类型   数组名 [ 元素个数 ]  。

    int a[10];
  2. [] 只能放在数组名的后面。
  3. [] 里面的个数必须是一个固定值,可以为常量、常量表达式。不能使用变量或者变量表达式来表示元素个数。
  4. 定义数组时,系统将按照数组类型和个数分配一段连续的存储空间来存储数组元素。

    1 //查看数组的地址
    2 int a[5];
    3 //第一种方式:
    4 printf( "%d" , &a[0] );
    5 //第二种方式:
    6 printf( "%d" , a );

    数组名代表整个数组的地址,就是数组的起始地址,也就是第0个元素的地址。

  一维数组与函数参数

    •   一维数组的元素作为函数实参,于同类型的简单变量作为实参一样,是单向的值传递。形参的改变不影响实参。
    •   如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组与实参数组完全相同,指向的是同一片内存空间。在修改形参数组时,实参数组也会被改变。形参数组的元素个数可以省略。

二维数组

  1.   二维数组的定义:类型  数组名 [ 行数 ] [ 列数 ]

    1 int a[2][3];
  2.   二维数组的存储:
    •   可以把二维数组看成是一个一维数组的集合,也就是说二维数组是一个特殊的一维数组:它的元素是一维数组。
    •   二维数组的存放顺序是按行的顺序进行存放的。

      1 //查看二维数组的地址
      2 int a[2][3] ;
      3 //第一种方式:
      4 printf( "%d" , &a[0][0] );
      5 //第二种方式:
      6 //a[0] 也是个数组,所以 a[0] 就是数组名,就是代表着这个数组的地址
      7 printf( "%d" , a[0] );
      8 //第三种方式:
      9 printf( "%d" , a );

格式符


%.2f


保留两位小数


%4d


占用4个空格的空间


&


取地址符

时间: 2024-10-11 23:30:19

黑马程序员——C语言基础(一)的相关文章

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

黑马程序员_01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

------- android培训.java培训.期待与您交流! ---------- Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字:goto和const保留了它们,但是Java没有使用. 运算符:注意运算符优先级(左结合和右结合要注意) 分隔符:注意+号可以分割字符串. 注释:三种注释. 数据类型与变量 常量: 整型 浮点型 字符:注意后面跟三个八进制(\ddd)和 四位unicode码(\u8bf7) (不区分大小写) 字符串 布尔型 变量:

黑马程序员---C语言基础---结构体

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------ 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语言基础之--变量、内部函数与外部函数

------- IOS培训期待与您交流! ---------- 一.变量 变量代表着一个有名字的.具有特定属性的一个存储单元,运行期间,变量的值是可以改变的.变量必须先定义,后使用.定义时,指定该变量的名字与类型.变量名实际上是以一个名字代表的一个存储地址:而从变量中取值,实际上是通过变量名找到相对应的内存地址,再从该存储单元中读取相对应的数据. 刚刚提到了变量定义这个词,我们知道,在定义函数的时候,我们都会先对函数进行一个声明,这就又引用了一个概念:声明.那么我们先来理解一下什么是声明和定义:

黑马程序员-C语言基础一:关键字、标识符、注释

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 一.      关键字 1.      什么是关键字 1>     关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” 2>     C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 auto doubl

黑马程序员— C语言基础之内存剖析

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 在学习C语言基础知识时,老师对内存的分析很重视,几乎每个知识点都会帮我们分析内存存储情况,透过内存的分析也让我们对C语言有了更深的一些了解,C语言跟其他计算机语言相比,对内存的分析和要求更高,下面我们一起来了解和学习一下C语言的内存剖析,是我个人的在学习中的一些总结,如果问题或者不到位的地方也希望大家能够一起交流和指正. 第一讲  进制 进制是一种计数的方式,数值的表示形式,一般我们C语言主要