C语言 数据类型输入输出函数(2018.11.17)

基本数据类型
5个方式了解基本类型
1、符号
2、字节数
3、数据范围
4、表示方法
5、运算方法

内存空间分配给变量,不是类型
指针类型:指针变脸中只能存放地址
空类型:主要用于数据类型的转换和定义函数类型
void指针是万用指针,万用=无用,多数用于类型转换后使用

限定性流程转向,调用、返回函数。函数只能返回一个值。输入输出参数能使函数返回多于一个值。

‘/0’与NULL的值都等于0

typedef 重新制定声明变量类型

printf()
由头文件 stdio.h 声明。
std 标准库
i 输入
o 输出

格式控制符

1、%d。按10进制整型数据的实际长度输出。
2、%md。如果数据的位数小于m,则左端补以空格,若大于吗,则按实际位数输出。
3、%ld。输出长整型数据。
4、%o。以八进制整数形式输出。
5、%c。输出一个字符
6、%s。输出字符串
%ms:输出的字符串占m列。若字符串小于m,向左补空格。大于m,全部输出。
%-ms:如果字符串小于m,则右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格
%-m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,右补空格
7、%m.nf:指定输出的数据占m列,其中有n位小数。如果数值长度小于m,则左端补空格
8、%x,%X:十六进制无符号整型 【%x:ff,%X:FF】
9、%e,%E 指数形式浮点小数。【%e:5.67e+02,%E:5.67E+02】
10、%-:输出数据在域内左对齐。
11、%+:指定在有符号类型的正数前有正号“+”
12、%#:在八、十六进制数显示0,0x。
13、%0:输出数值是指定左边不使用的空位补0。

scanf()
键盘输入 ------->缓冲区 -------> scanf在缓冲区取数值
scanf输入会产生输入垃圾
用getchar()取一个字符,可以取走输入垃圾‘/n’或者‘空格’
fflush:清空输入缓冲区

格式控制符
%k:短整型
%m:指定输入数据所占宽度【不能针对精度】
%*:赋值抑制符【消除输入垃圾】【文件操作用得比较多】
eg:
scanf(%d%*d%d,&a,&b);

scanf不能输入带空格的字符串
gets,只认回车为结束符号,可以输入带空格的字符串。

一般变量初始化:
默认初始化:1、全局变量,静态变量【存放全局/静态区,值为0,若是字符串,为空】
2、局部变量【动态数据区,值为随机值】
人工初始化:
1、数值变量
2、字符变量
3、指针变量【当指针变量不确定时,*p = NULL【防止野指针】】
4、数组

auto【默认】动态变量
static 静态变量
register 外部变量
extern 声明变量

static+全局变量:只能当前文件可以使用【防止文件与文件里同名的函数定义错误】
局部静态变量:存在不可见,仅限在本函数里用,多数用于保留上次调用函数时计算的值
全局变量:全部可以使用
register【寄存器变量】:1、只能是基本类型int
2、不能取地址
3、不能定义成静态变量
eg
10个寄存器,定义了15个,有5个还是在内存中

const 只读变量
const int *a;int const *a;
一个指向const int 型的指针
*a不可以修改
a可以改写

int *const a;【a需要初始化】
a是指向int 的const指针,*a可以改写,a不可以

int const *const a
都不可以改写

volatile【多用于arm】
限制优化,不可以被优化

结构体

struct node
{
    char a;
    short b;
    char c;
    struct node *p;【这里的结构体指针变量只能指向自己】
}std;

引用形式:结构体变量名.成员名
或者 p = &std;p -> a; (*p).a

内存空洞
字对齐、半字对齐。

struct node
{char ch;
 int num;
}; 变量占8个字节//字对齐 4+4 =8

struct node
{char ch;
 short num;
 char ch1;
  short b; 
}; 变量占8个字节 //半字对齐,2+2+2+2 = 8

struct node
{char ch;
  char ch1;
  char ch2
}; 变量占3个字节

struct node
{char ch;    // 4
 int num;   //4
 char ch1;  //ch1+ch2=4
 char ch2;  
 double c;    //8
 char ch3;  //ch3 +short =4
 short b; 
}; 变量占24个字节 //4*4+8=24

共用体union
可以把一个整型变量、一个字符型变量、一个实型变量放在同一个地址开始的内存单元中。即使几个不同的变量共占同一段内存空间。

union node
{ char ch[7];
  int num;
};      占8字节!//分配空间字对齐!4的整数倍

大端字节序:数据高位写在低位内存地址
小段字节序:数据低位写在高位内存地址

枚举类型
枚举类型声明代表常量的符号名称。
enum的默认值
enum kids{nippy, slats, skippy, nina ,liz};
enum的指定值
enum levels {low=100,medium=500,high=2000};

define 宏定义
定义常量与命令(避免幻数)
#define

猜你喜欢

转载自blog.csdn.net/Rayyyyyyy/article/details/84193993