C语言 数据类型

本文详细介绍了C语言的数据类型,包括int、short int、long int、char及其无符号类型,以及浮点数类型float和double。还讨论了整数的输出格式,如%d、%x等,并介绍了位移操作符、函数指针、内存分配函数malloc()、calloc()、realloc()以及变量的存储类别,如自动变量、外部变量和静态变量。此外,还涉及了二维数组、指针运算、宏定义和typedef的使用。
摘要由CSDN通过智能技术生成

int 32位

short int 16位

long int 简称 int 32位

char 8位

unsigned char 无符号字符 0—255

unsigned short int 0-65536  16位

unsigned int  4字节

整数的输出格式:

%d 十进制整数

%i 十进制整数

%u 无符号十进制整数

%x 十六进制(a--f)

%X 十六进制(A--F)

%o 八进制

float %f输出   4字节

double  8字节

优先级:算术优先、关系其次、逻辑最后

/000 表示8进制数, 相当于 0ooo     ,  ’/123’=0123

/xhh  表示16进制数,相当于0xhh ,    ‘/x4a’=0x4a

#  :(格式化字符串中用)printf(“%#X”,x);表示x以十六进制输出,前带0X

Used with o, x or X specifiers the value is preceeded with 0, 0x or 0X respectively for values different than zero.
Used with e, E and f, it forces the written output to contain a decimal point even if no digits would follow. By default, if no digits follow, no decimal point is written.
Used with g or G the result is the same as with e or E but trailing zeros are not removed.

<<   、>>移位符号,<<低位补零。>>最高位补充符号位。

 

函数指针 :所谓函数的指针,就是可以指向函数的指针。它的内容就是函数在内存里的地址。在计算机里,可以执行的函数程序代码必须放在内存的某个区域才能执行,此区域的起始地址就是该函数的地址。

函数名代表该函数的入口地址。

指向函数的指针:

数据类型 (*指针变量名)(函数参数列表);

1。在给函数指针变量赋值时,只需给出函数名而不必给出参数

2. 用函数指针变量调用函数时,只需将(*p)代替函数名即可,在(*p)之后的括号中根据需要写上实参。

3.用函数指针变量调用函数时,可以用(*p)(参数表),也可以用p(参数表)。两者等价。

 

malloc()和free()

*(p+n) = p[n];

calloc与malloc用途相同,能在程序执行时,视数据量的多少随时申请足够的空间。

指针 =calloc(n,size);n个数据项,每个size大小。

realloc()能扩大或缩小已取得的区域。指针=realloc(原先的指针,现需空间的大小);注意,计算机可能会找另一块足够大的空间来取代原来分配的空间。因此,新返回的指针值可能与原先的指针值不同。

私有变量的使用限于函数内部,统称为“内部”(Internal或Local)变量。公共变量则可以让各个函数共享,统称为“外部”(External或Global)变量。根据使用权限,变量可以分为三个类:

自动变量(auto)隶属于一个函数,别的函数无权使用。自动变量是内部变量,必须声明与函数之内。函数中的局部变量,如果不专门声明为static类型,都是动态的分配存储空间的,数据存储在动态存储区中。函数中的形参和在函数中定义的变量,都属于此类。

外部变量(external)程序(常由数个源代码文件所组成)由各函数公用

外部静态变量(External Static)一个源代码文件,该文件内的各函数公用,但其他文件内的函数无权使用。有时在程序设计中希望某些外部变量只限于被本文引用,而不能被其他文件引用。这时在定义外部变量时加一个static。

静态局部变量(static)有时希望函数中的局部变量在函数调用结束后部消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。

static 关键字的使用规则:

若想延长内部变量的生命期,就在内部变量前加上static

若想把外部变量的有效范围局限于所属的原始文件内,就在外部变量前加上static

 

内部函数:

不让其他文件共享的函数称为“静态函数”(static function) static 类型  函数名称(参数表);

外部函数:

在定义函数时,如果在函数首部的最左端加关键字extern,则表示此函数是外部函数,可供其他文件调用。

C语言规定,如果在定义函数时省略extern,则隐含为外部函数。在需要调用此函数的文件中,用extern对函数进行声明,表示该函数是在其他文件中定义的外部函数。

 

2维数组与指针

p[i]=*(p+i)

p[i][j] = *(p[i]+j) = *(*(p+i)+j)

 

数组的赋值:int a[3] = {0,1,2};

int a[2][3]={{0,1,2},{3,4,5}};

 

宏:#define 别名   常数或符号

“”内的符号不会被解释为宏,所以不会被替换。

typedef 用来替换某一变量类型取一个新的名称,他是一般的指令,而不是宏定义。

带参数的宏:1.参数被包含于宏名称后的小括号内,但是宏名称与小括号要紧密连接在一起。

          2.跨行的宏:使用“反斜线+ENTER”可将宏定义切分为数行。

          3.##的使用。举例:#define FUNC(type) /

                                   type * type##_function() /

                                       {

             如果写成 FUNC(int)

预处理后,为     int * int_function(){

type##表明了此type是参数,所以会被取代。

              4.取消宏:#undef可以取消由#define所定义的宏。#undefine的意思是在此后的该宏不再是宏了,请勿替换。#define –#undefine 说明了该宏的有效范围。

条件性定义:

#ifdef 宏   若已定义了此宏,就留下#ifdef与#endif间的指令

#ifndef 宏  若未定义了此宏,就留下#ifdef与#endif间的指令

      #endif   说明#ifdef 及#ifndef的范围

      #unfef 宏  解除定义

      #else 可构成#ifdef –#else -- #endif 结构或#ifndef –#else -- #endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值