重拾C之数据

C中只有四种数据类型,整型,浮点型,指针和聚合类型

一。整型

  字符,短整型,长整形,整型

  标准中并没有规定长整形要比短整型长,规定:长整形至少应该和整型一样长,而整型至少应该和短整型一样长

  short int 至少16位,long int 至少32位,缺省的Int的位数多以机器的环境字长来决定。char型变量的值最好限制在unsigned char和signed char的交集里,考虑到兼容性问题,char最好不要参与算术运算

  整型字面值:用const声明的变量,当一个程序中出现整型字面值的时候,它属于那种类型有字面值最后的字符决定,L为long型,u为unsigned型,另外字符常量的类型总是Int,你不能在后面添加别的后缀

  枚举类型

  枚举类型就是指他的值为符号常量而不是字面值的类型;例如 enum Jar_Type {CUP,PINT,QUART,HALF_GALLON,GALLON}

  这条语句声明了一个类型,称为Jar_Type,这种类型的变量按如下方式声明

  enum Jar_Type millk_type,gass_can,medicine_bottle;

  这些类型的变量其实是以整型的方式存储,这些符号名的实际值都是整型,你可以为这些符号名制定特定的整型值

  enum Jar_Type{CUP=8,PINT=16,QUART=32,HALF_GALLON=64,GALLON=128};

  不要把整型和枚举值混在一起使用

二。浮点型

  float double long double组成,他们的长度规定和Int,short int ,long int 相近

三。指针

  C中不存在指针常量,如果你需要修改字符串,请把它存储与数组中      你可以把字符串常量赋值给一个“指向字符的指针”,但是不能把一个字符串常量赋值给一个字符数组,因为字符串常量的直接值是一个指针,而不是这些字符本身

  声明指针:int *b,*c,*d;是声明三个指针的正确方式

四。typedef

  typedef声明的写法和普通的声明基本相同,只是把typedef这个关键词出现在声明前面

  char *ptr_to_char;  改为 typedef char *ptr_to_char;   ptr_to_char a; 声明a是一个 指向字符的指针

  应该 用typedef而不是#define 来创建新的类型

五。常量

  用const关键字来声明常量,他们的值不能修改

  如何初始化1。 在声明的时候对他进行初始化 int const a=150; 2.在函数中声明为const的形参在函数被调用时会得到实参的值

  当涉及到指针变量时,情况变得有趣。

  Int *pi;

  int const *pci; 是一个指向整型常量的指针,你可以修改指针的值,但是你不能修改它所指向的值

  int * const cpci;是一个指向整型的常量指针,指针是常量,它的值无法修改,但是你可以修改它所指向的整型的值

  #define指令时另一种创建名字常量的机制 只要允许使用字符值常量的地方都可以用,比如声明数组的长度,而const只能用于允许使用变量的地方

六。作用域

  1.代码块作用域(位于一对花括号之间的所有的语句称为一个代码块)

  2.文件作用域

  任何在所有代码块之外声明的标识符都具有文件作用域,从声明处开始到它所在源文件的结尾处都可以访问,在文件中定义的函数名也具有文件作用域

  3.原形作用域

  只适用于在函数原型中声明的参数名,,在原型中(也就是声明的时候),参数的名称并非必需,可以随便起 ,不必跟定义的时候的形参名保持一致

七。链接

  三种:external,internal,none

  代码块外的和函数默认的属性是external,而代码块内部的默认为时None型的

 None总是被当做单独的个体,也就是说该标识符的多个声明被当做独立不同的实体, internal的标识符在同一个源文件内的所有声明中都指向同一个实体,external的标识符不论声明多少次,位于几个源文件中都表示同一个实体

  static关键字可以将external链接属性的改为Internal属性的,而且只对缺省链接属性为external的声明才起作用

  extern关键字,如果为一个标识符知道指定external链接属性,则,可以访问在其他位置定义的这个实体

八。。存储类型

  有三个地方可以用于存储变量:普通内存,运行时堆栈,硬件寄存器

  auto,static,register

  尽量不要用register,因为编译器不一定会理睬,在有些计算机中,可以将使用频率最高的那些变量声明为寄存器变量,可以提高程序效率

  在代码块内部声明的变量的缺省类型时auto ,也就时说它存储在堆栈中,在代码块之外声明的变量的缺省存储类型为static类型的,这类静态变量在程序运行之前创建,在程序的整个执行期间始终存在,始终保持原型的值,除非给他赋一个不同的值,或者是程序结束

  函数的形参不能声明为静态的,因为实参总是在堆栈中传递给函数,用于支持递归,在代码块内部声明的变量,如果给他加上static关键字,就变成了静态局部变量了

初始化:静态变量,系统会自动给其赋值,而动态的不会,如果不给他显式的初始化,他们的值总是垃圾

  

时间: 2024-10-27 13:27:51

重拾C之数据的相关文章

重拾qt

最近公司又接了一个煤矿的项目,要写个小程序摘取数据,我是公司唯一c++程序员,本来搞ios搞好好的,现在又得重拾半年没摸得qt了.呵呵...呵呵呵. 这里只记录这次小程序的一些小的总结吧.. 1.中文字符: 函数:把一般字符串转为中文字符串: //中文处理 QString mysqlServerTs:: handleTheChinesCode(const char*words){ QTextCodec* tc = QTextCodec::codecForLocale(); return tc->

【玩转SQLite系列】(一)初识SQLite,重拾sql语句

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53230842 本文出自[DylanAndroid的博客] [玩转SQLite系列](一)初识SQLite,重拾sql语句 SQLite由于是一个轻型的嵌入式的数据库,被应用于Android系统当中.在Android开发中 我们难免会用到SQLite数据库.接下来用一系列的文章来数据一下SQLite数据库. 一.认识SQLite 1.什么是SQLite SQLite,是一款轻型

【重拾】数据结构之一

前言 久违来一发,回来学校也都两周了,想想也该定下来学学点什么了,突然发现以前学的好像都已经忘的差不多了,而且以前学的也学得云里雾里,所以今天我要重拾数据结构. 何为数据结构 数据是描述客观事实的数和字符的集合,人们通常以数据元素作为数据的基本单位,比如52班的每个学生记录都是一个数据元素数据项是具有独立含义的最小数据单位. 数据结构是指所有数据元素已经数据元素之间的关系数据结构包括以下几个方面:    1.数据元素之间的逻辑关系,即数据的逻辑结构,它是数据结构在用户面前呈现的形式    2.数

使用JWT和Spring Security保护REST API,重拾后端之Spring Boot

通常情况下,把API直接暴露出去是风险很大的,不说别的,直接被机器***就喝一壶的.那么一般来说,对API要划分出一定的权限级别,然后做一个用户的鉴权,依据鉴权结果给予用户开放对应的API.目前,比较主流的方案有几种: 用户名和密码鉴权,使用Session保存用户鉴权结果.使用OAuth进行鉴权(其实OAuth也是一种基于Token的鉴权,只是没有规定Token的生成方式)自行采用Token进行鉴权第一种就不介绍了,由于依赖Session来维护状态,也不太适合移动时代,新的项目就不要采用了.第二

重拾linux

重拾linux 起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使用linux.docker等.记录下过程,防止以后忘记!(所以不会涉及具体的安装步骤) 下载 到网易开源镜像站,挑选一个linux下载.我安装linux只要是为了学习运维方面的知识,同时用于进行网络知识方面的实践.如果你跟我一样,推荐Ubuntu server版本,纯字符界面,就跟一

重拾梦想,做更好的自己

亥时,就寝,忽入空灵,甲申年出师已历一纪,诸多记忆电光石火逐一闪现.时年家贫无靠,生计无着,每日波奔却心系梦想,虽日日身疲体倦,却每以<孟子·告子下>篇中名句“天降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行指乱其所为,所以动心忍性,曾益其所不能也”以慰寸心,类比篇中清史名人,胸中满溢浩然正气,行事尽显峥嵘:历12载,生活稳定,已婚并育一女,四老体健而心宽,内子贤而持家,小女伶俐活泼,此三项尽得,可谓得意了. 然忆及往昔践行之路与现时行走之途,高下立判,原所行皆可日日前行,步步

重拾C/C++基础

1.复制指针时只复制指针中的地址,而不会复制指针指向的对象2.解决护栏柱错误的根本 是 从思想认知上搞定. 数组的序号为偏移量.  也即: 数组的第一个元素为arrName[0],其偏移量为03.使用strcpy函数时要注意,若是源串的长度大于目标串的长度,将会覆盖缓冲区后面的内容  所以尽量使用strncpy来替代strcpy4.数组可以使一维或者是多维.只要数组包含的元素为内置类型或者有默认构造函数的类,就可以初始化5.数学运算符有5个: +(加) -(减) *(乘) /(除) %(求模)6

重拾算法(5)——最小生成树的两种算法及其对比测试

重拾算法(5)——最小生成树的两种算法及其对比测试 什么是最小生成树 求解最小生成树(Minimum Cost Spanning Tree,以下简写做MST)是图相关的算法中常见的一个,用于解决类似如下的问题: 假设要在N个城市之间建立通信联络网,那么连通N个城市只需N-1条线路.这时自然会考虑这样一个问题:如何在最节省经费的前提下建立这个通信网. 在任意两个城市间都可以设置一条线路,相应地都要付出一定的经济代价.N个城市之间最多可能设置N(N-1)/2条线路,那么如何在这些线路中选择N-1条,

[java]基础重拾

7.17 重新学习了包管理 对于没有使用package打包的类,归到默认包.使用其他包名打包类,必须在工程文件夹下新建对应包名的目录.比如 package com.tencent.demo 则需要在工程文件夹下,新建名为com的文件夹,并在com文件夹下新建tencent文件夹,再简历demo文件夹,依次类推. [java]基础重拾