变量三要素:

一个变量有三个基本的要素,变量的名称,变量的类型,变量的值。
所以int a = 10; 变量名为a,变量的存储类型为int型,变量的值为10。

变量还有一些属性如作用范围和存储类型。

变量作用范围和存储类型

作用范围有局部变量和全局变量。局部只在特定范围内起作用。全部变量在整个程序运行期间起作用。

存储类型有auto(自动),static(静态),register(寄存器变量)

自动变量auto默认省略,int a = 10; 和 auto int a = 10;是一样的。自动变量动态的分配内存空间,数据存储在动态存储区内。
静态变量static,在函数初始化的时候就分配空间,而且数据存储在静态存储区内,在程序运行期间,变量的存储空间不会被释放掉。

指针变量

指针变量除了上面的三要素以外,还有指针指向的数据类型。
int *p = &a;
变量名为p,变量的类型为指针类型,变量的值为a的地址,该指针变量指向的数据类型为int类型。

如何判断变量类型

int (*p)(int,int); 指向函数的指针。
是一个指针,该指针指向一个函数入口。
判断方法:p先和*结合,为一个指针。后和(int,int)结合,指针指向返回值为int 的函数。

float *fun(int a); 返回指针值的函数。为一个函数,形参为int型,返回值为一个float类型指针。
判断方法,fun和(int a)结合,为函数。函数返回值为float类型指针。

int *p[4]; 指针数组。为一个数组,数组里面元素的存储类型为指针类型。
判断方法:p和[4]结合,为一个数组,数组存储的类型为int类型指针。

float (*pointer)[4] ;指向一维数组的指针变量。为一个指针,指针指向长度为4的数组。
判断方法:pointer和*结合,为一个指针。该指针指向一个长度为4的,存有float类型的数组。

所以判断一个变量类型的时候,先看变量名的结合性,首先和什么结合就是什么类型变量,先和指针结合就是指针变量,和数组结合就是数组。然后在看该变量的其它属性:指针有其指向的类型、数组有其存储类型,函数有返回类型和形参等等。

C语言变量 类型判断的更多相关文章

  1. JS 中对变量类型判断的几种方式

    文章整理搬运,出处不详,如有侵犯,请联系~   数据类型判断和数据类型转换代码工具 在 JS 中,有 5 种基本数据类型和 1 种复杂数据类型,基本数据类型有:Undefined, Null, Boo ...

  2. C语言变量类型和具体的范围

    什么是变量?变量自然和常量是相对的.常量就是 1.2.3.4.5.10.6......等固定的数字,而变量则根我们小学学的 x 是一个概念,我们可以让它是 1,也可以让它是 2,我们想让它是几是我们的 ...

  3. c语言变量类型联想

    int float char *(指针) 已经定义:单个变量 单个相同类型在内存中顺序存放:数组 不同单个类型在内存中顺序存放:结构体 不同类型在内存中自由存放:链表 其中结构体与链表类型需运用时提前 ...

  4. javascript 变量类型判断

    一.typeof 操作符 对于Function, String, Number ,Undefined 等几种类型的对象来说,他完全可以胜任,但是为Array时 "); typeof arr ...

  5. go语言 变量类型

    package main import "fmt" func main() { //这是我们使用range去求一个slice的和.使用数组跟这个很类似.创建数组 nums := [ ...

  6. C语言 变量类型

    // a是一个全局变量,静态变量 int a; void test() { // b是一个局部变量,自动变量 ; b++; // c是一个局部变量,静态变量 ; c++; printf("b ...

  7. js变量类型判断 严格通用 Object.prototype.toString.call()

    Object.prototype.toString.call()判断结果: Object.prototype.toString.call(true) "[object Boolean]&qu ...

  8. javascript数据变量类型判断(JS变量是否是数组,是否是函数的判断)

    function isArray(o) { return Object.prototype.toString.apply(o) === “[object Array]”;}function isFun ...

  9. C语言变量类型

    #include <stdio.h> // C 语言中,任何数据类型都不可以直接存储一个字符串.那么字符串如何存储? //在 C 语言中,字符串有两种存储方式,一种是通过字符数组存储,另一 ...

随机推荐

  1. pytest - 失败重运行机制:rerun

    失败重运行机制 用例失败的情况下,可以重新运行用例 一旦用例失败,马上重新运行 安装插件:pip install pytest-rerunfailures 使用命令:--reruns 重试次数 如 - ...

  2. mybatis-plus 分页查询+ dao层抽象

    1.配置文件添加paginationInterceptor @Configuration @MapperScan("fama.cost.*.mapper") public clas ...

  3. 中继TensorRT集成

    中继TensorRT集成 介绍 NVIDIA TensorRT是用于优化深度学习推理的库.这种集成将使尽可能多的算子从Relay转移到TensorRT,从而无需调整调度,即可在NVIDIA GPU上提 ...

  4. 重新整理 mysql 基础篇————— 介绍mysql日志[二]

    前言 对于后端开发来说,打交道最多的应该是数据库了,因为你总得把东西存起来. 或是mongodb或者redis又或是mysql.然后你发现一个问题,就是他们都有日志系统,那么这些日志用来干什么的呢? ...

  5. 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...

  6. WordPress安装篇(2):用宝塔面板在Windows上安装WordPress

    上一篇文章介绍了如何使用PHPStudy工具在Windows Server环境安装WordPress,接下来介绍一款更加强大的部署WordPress的集成工具--宝塔面板.宝塔面板不仅提供免费版本,还 ...

  7. 【NX二次开发】根据根据坐标系、对象旋转视图旋转视图uc6434

    uc6434 (); //旋转视图 参数1:如果输入""则旋转当前工作视图参数2:1.按照ABS旋转视图.2.按照WCS选择视图.3.按照参数3旋转视图.4.按照参数4旋转视图参数 ...

  8. Linux操作系统(一)

    计算机本身就是一堆硬件,这些硬件中最核心的就是CPU(运算器,控制器) 和存储器设备. 为了能够实现计算机获取数据,数据的输入输出等等需要输入设备和输出设备. 计算机体系内部:主要是通过桥接接入当前系 ...

  9. cos中的文件结构(DF/EF/MF/FID/AID/SFI..)

    转载自:https://blog.csdn.net/Enjoy_endless/article/details/75108349 刚开始接触CPU卡的时候,对于各种文件.应用的定义容易模糊不清,通常不 ...

  10. Redis之Sentinel

    Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的.可喜的是Redis从 2.8 ...