C语言攻略指南(二)基础篇

变量

  • 什么是变量?

变量是程序可操作存储区的名称,通常该存储区是内存,变量就是内存中一块空间的标识。 变量具有有类型,而变量的类型决定占用内存空间的大小。

变量的命名规:由字母,数字,下划线("_"),组成的序列,第一个字符必须为字母或下划线。

  • 变量的基本类型
char                        字符型
int                         整型
float                       单精度浮点
double                      双精度浮点 

使用 sizeof 查看占用存储大小

#include <stdio.h>

int main ()
{
    int i;

    printf("字符型所占存储空间为: %d 字节\n", sizeof(char));
    printf("整型所占存储空间为: %d 字节\n", sizeof(i));

    return 0;
}

  

  • 变量的声明

C语言中所有变量都必须先声明后使用。一次可以声明多个变量,也可拆开分别声明,声明的同时也可初始化。

int a, b, c;
int d = 10;
char f;

  

全局变量和局部变量

  • 全局变量

全局变量也叫外部变量,是在函数体外定义的。

全局变量又分 外部全局变量,静态全局变量。

使用 static 存储类型的全局变量只能在被定义的源程序文件中使用

使用 extern 存储类型的全局变量不仅能在被定义的源程序文件中使用,还可以被其他源文件中的函数引用。

#include <stdio.h>

int a = 16;

void print()
{
    printf("全局变量 a = %d \n", a);
}

int main()
{
    print();

    return 0;
}

example-1

如果 print 函数定义在 全局变量的前面,就需要加上一句 extern int a,否则会报错,具体如下。

#include <stdio.h>

void print()
{
    extern int a;
    printf("全局变量 a = %d \n", a);
}

int a = 16;

int main()
{
    print();

    return 0;
}

example-2

  • 局部变量

局部变量,是在函数中定义的,形参也是局部变量。

注意局部变量的作用域仅在定义该变量的函数内,如全局变量和局部变量同名,在局部变量作用域(该函数)内,局部变量覆盖全局变量。

#include <stdio.h>

int a = 16;

int main()
{
    int a = 3;
    printf("a 的值为 %d \n", a);
    return 0;
}

生存周期和作用域

所谓的生存周期,是指变量占用内存或者寄存器的时长。根据变量的存储类型的不同,在编译的时候,变量将被存在动态存储区或静态存储区中,其生存周期是由声明时的存储类型所决定的。

静态存储区:存放全局变量和静态变量,在执行程序前分配存储空间,占用固定的存储单元

动态存储区:存放的是函数中的局部变量,函数的返回值,形参等,它在函数被执行的过程中进行动态分配,在执行完该函数时自动释放。由于这种机制,前后调用同一个函数,其临时变量分配到的地址可能不同。

存储类型

auto

  非静态变量的局部变量为 auto 变量。在函数内不加 atuo 说明存储类型的变量,视为 auto 类型。

register

  register 存储类型用于定义存储在寄存器中的局部变量,使用 register 存储类型是为了提高执行效率。

  注意:因为寄存器的数目有限,故不能大量使用 register 。即使用了 register ,也并不意味着变量一定将被存储在寄存器中,取决于硬件和实现的限制。

static

  static(静态)变量,它的生存周期是从程序开始运行到程序运行结束,属于静态存储区。

  静态全局变量,它只能在被定义的源程序文件中使用,不能别其它源程序文件中的函数调用。

  静态局部变量,它的生存周期虽然是从程序开始运行到程序运行结束,但是它的作用域仅在定义它的函数内。

  静态局部变量是在它所在函数被执行时初始化,之后再执行该函数时,静态局部变量将不再初始化,而是保留上一次的值。

extern

  外部存储类型,extern 类型的全局变量,不仅能在被定义的源程序文件中使用,还可以被其他源文件中的函数引用。如全局变量没有指定存储类型,则默认为 extern 类型。

  

常量

  常量是固定的值,在程序执行期间不会改变。

  

算数运算符

+           加
-           减
*           乘
/           除
%           取余
++          自增
--          自减

注意:自增和自减,a++ 表示先操作后自加1,++a表示先自加后操作,自减同理。单目运算优先级大于双目运算。

 

关系运算符

>           大于 
<           小于
>=          大于等于
<=          小于等于
==          等于
!=          不等于

逻辑运算符

&&
||
!

  

赋值运算符

=

将右边的值赋给左边  

i = i + 3
等价于
i += 3

算数运算符均可这么玩

 

优先级

  简单记

    ! > 算术运算符 > 关系运算符 > 逻辑运算符(!除外) > 赋值运算符

  

ps:重点在前部分 O(∩_∩)O~~

时间: 2024-10-20 11:00:38

C语言攻略指南(二)基础篇的相关文章

C语言攻略指南(三)流程控制篇

流程控制语句,或者说控制流语句,是用于控制程序计算操作执行的次序,使我们能实现判断,选择,循环等操作.本篇将逐一描述 C语言中的流程控制语句. 选择结构 if 语句 if(表达式) 语句1; else 语句2; 如果表达式的值为真(非0),执行语句1,如果为假(0),则执行语句2.(在 C语言中,非零即真) 这里的语句并不单指一条以 ; 为结束符的语句,也可能是多条语句,而是多条语句时,即代码块,最好用 { } 括起来,这样不容易出错,也方便读. else 部分是可选的,如果不写,表达式的值为真

C语言攻略指南(四)函数篇

其实在开始篇中第一个程序 Hello World,就已经使用了函数,输出的 printf 函数,封装这一系列操作的 main 函数.C语言程序是由一个个函数组合而成,这是C语言模块化的表现.所谓的模块化就是将复杂的任务分割成若干个小任务,每个小任务就是一个模块, 先分别实现各个模块,而后实现最终目标.这种模块化的思想,将程序的复杂度降低,逻辑更加清晰. 函数的定义 返回值类型 函数名(参数) { 函数体 } 返回值类型:一个函数可以有返回值,也可以无返回值,有返回值需要说明返回值的类型是 int

C语言攻略指南(五)数组篇

数组是指那些具有相同的数据类型的,数量有限的若干个变量通过有序的方法组织起来的一样种便于使用的形式.数组属于派生类型(数组是建立在其他类型的基础上),数组中的变量被称为数组的元素. 一维数组 一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的数据 数组的定义 类型说明符 数组名[常量表达式]; int group[10]; // 创建一个整型的数组,数组长度为10,即数组元素个数为10 数组的定义后,会为数组元素开辟一块连续的内存空间,数组的类型决定数组元素内存空间的大小 ,若想要使

chrome调试工具高级不完整使用指南(基础篇)

一.前言 本文记录的是作者在工作上面对chrome的一些使用和情况的分析分享,内容仅代表个人的观点.转发请注明出处(http://www.cnblogs.com/st-leslie/),谢谢合作 二.浏览器模块介绍 由于chrome浏览器一直在不断的进行更新迭代,会不断的新增功能,有一些老的功能会被摒弃掉,所以我们介绍这个功能的时候是以这个系列文章发布时候的最新版为主(2018-01-05 ) 1. 用来选择所需要的HTML元素,通过HTML元素定位到Elements中的对应代码 2. 用来在手

用R语言进行分位数回归:基础篇

用R语言进行分位数回归:基础篇 詹鹏 (北京师范大学经济管理学院 北京) http://www.xiaowanxue.com/up_files/2012121819040.html 原文地址:https://www.cnblogs.com/jwg-fendi/p/10069488.html

零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(基础篇)

实现目的:爬取昆明市范围内的全部中学数据,包括名称.坐标. 先进入基础篇,本篇主要讲原理方面,并实现步骤分解,为python代码编写打基础. 因为是0基础开始,所以讲得会比较详细. 如实现目的所讲,爬取昆明市全部中学数据,就是获取百度地图上昆明市范围内所有关键字带中学的地理信息数据(兴趣点). 怎么把百度地图上的数据抓取下来呢? 以下是教程: 本篇目录如下: 1. 百度地图开放平台注册,AK获取 2.关于ak的说明 3.请求URL说明 4.百度地图坐标拾取器 5.以坐标范围获取兴趣点POI 6.

php面试题汇总二(基础篇附答案)

介绍一些php常见面试题及答案,都是平时面试的时候经常会遇到的,小伙伴们仔细了解下吧.接着上一篇php面试题汇总一(基础篇附答案) 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中:而链接到当前页面的URL记录在预定义变量(2)中. 答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 2:数组函数 arsort 的作用是(6):语句 error_reporting(2047)的作用是(7

javase基础复习攻略《二》

今天就开始的真正走进JAVASE的世界,本篇介绍的是:JAVASE基础语法,大家如果有C语言的基础,对于本节内容一定感觉非常轻松,编程语言之间的都是相通的,只不过C语言属于面向过程编程,而JAVA语言则是一种面向过程的设计思路,相信以后的发展一定会朝着面向服务的方向. 废话不多说,开始今天的总结: 1.标示符: 标示符为何物?它就是JAVA规定的一种命名规则.凡是需要你自己进行命名的地方都需要遵守JAVA的标示符规则,JAVA标识符包括:a.标识符是由英文字母.下划线(_).美元符号($)和数字

.NET学习攻略(二)

此文为转载,特此注明! .NET学习路径 第一步 熟悉要使用的程序设计语言  目前支持.NET的语言共有二十五种,内建于Visual Studio .NET的程序语言则有Visual C++.Visual Basic.Visual C#等,其中VB与C#可以说是为.NET所量身订作的,因此在此建议以这两种语言为主. 至于选择哪一种语言全看个人的情况.  近年来,VB 的开发者希望Microsoft公司能推出更强大.程序架构更合理的开发语言以符合企业的需求:而 C++ 的开发者则希望能Micros