C语言 基础知识(一)

2017-09-25  本文已影响0人  小白虫虫

输出函数 各种占位符


%d ->int

%ld ->long int

%c ->char

%f ->float,默认保存小数点后6位。(在%.数字f,百分号与占位符中间位置修改默认保留位数)

%u ->无符号整形数(范围:0-255)

%hu ->无符号短整形(范围:0-127)

%hd ->短整形

%lf ->double 默认保存小数点后6位。

%x ->十六进制输出

%o ->八进制输出

%s -> 字符串

%g ->跟%一样,差别是不保留小数后无用的0

%lg ->跟%lf一样,差别是不保留小数后无用的0

补充:


\r 回车字符,会把光标重新挪到本行第一位,覆盖本行已经打印的内容。

\r必须与\n一起使用,可避免出问题。

C中没有String类型,但可以用Char char[] 表示,结束标志是\0

输入函数


格式:scanf("占位符",“内存地址”);

不管是输入,还是输出函数,占位符都在前面的引号里,内容都在后面的引号里!!!

指针


格式:某种类型*,例如:int* p,定义一个int类型的一级指针变量。

理解:指针就是内存地址,即内存地址编号。

操作:赋值 -> int i=10; p=&i, 指针p指向i的地址;

取值 -> int j; j=*p,把指针p指向的地址的内容取出来;

**本值和地址没关系,各司其职而已。值:负责数字,地址:负责位置。 

指针和指针变量的区别:


指针里存的是100,指针:地址--具体;

指针里存的是地址,指针:指针变量--可变;

指针的重要性:


1、可直接访问硬件(opengl显卡绘图);

2、可快速传递数据(指针表示地址);

3、可返回一个以上的值(返回一个数组或者结构体的指针);

4、可表示复杂的数据结构(结构体);

5、可方便处理字符串;

6、可有助于理解面向对象;

*号的三种位置:


3*5  数学运算符;

int* p 定义指针变量;

*p 取内存地址为p的里面的数字;

对于交换值的错误认识:


面向过程,只有拿到数值的地址,才能真正拿到该数值;

只操作了地址,仅仅说明地址上下交换了,但是内容还是在地址里面,也跟着交换了。

正确做法:拿到地址后,操作数值交换,就能实现真正交换。

返回多个值:


void close(int* a,int* b){   }

通过被调用的函数,来修改主调函数中普通变量的值。

1、实参必须是普通变量的地址;

2、形参必须是指针变量;

3、被调用的函数中必须通过修改 *形参名的方式修改主调函数相关变量的值;

多级指针


定义:

例如:int i=10; 

int* p1=&i; 一级指针,存放的i的内存地址;

 int**p2=&p1;二级指针,存放的p1的内存地址;

 int ***p3=&p2;三级指针,存放的是p2的地址;

。。。反正存的就是地址!!!

取值:

int j=***p3; 或者 int j=**p2; 或者 int j=*p1;

与存的顺序相反;

上一篇下一篇

猜你喜欢

热点阅读