IOS基础---C语言学习之查漏补缺小总结(一)

一、交换两个数的另类方法

第一种方法

{

   a = b-a;

   b = b-a;

   a = b+a;

}

 

第二种方法

{

   a = a^b; 

   b = a^b; 

   a = a^b;

}

 

二、if语句

if的第一种结构

if(条件)

 {

    语句;

 }

 

if的第二种结构

if(条件1)

 {

    语句;

 }

 else{

    语句;

 }

 

if的第三种结构

 if(条件1)

 {

    语句;

 }

 else if(条件2)

 { 

    语句;

 }

 else

 { 

    语句;

 }

 

if的第四种结构

if (条件)

    语句1

 

if使用注意:

1> 比较大小时,常量值放左边,变量放右边

2> 注意赋值运算符,不要写成两个=

3> if语句后面不要写;

4> 如果要在if后面的语句中定义新的变量,必须用大括号{}

 

三、switch语句

switch (数值)

 {

    case 数值1:

        语句1;

        break;

    case 数值2:

        语句2;

        break;

 default :

        语句3;

        break;

 }

四、三种循环结构

1. while循环

while (条件)

 {  循环体

 }

 

例子

int i = 0;

while(i<10)

{

printf("例子");

i++;

} //输出10行


 

运行原理:

1> 如果一开始条件就不成立,永远不会执行循环体

2> 如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立......

 

2. do……while

格式:

do {

 } while(条件);

 

例子:

int i = 0;

do{

printf("例子");

i++;

}while(i<10)//输出11行

 

3. while和do-while的区别

1> 很多情况下,whiledo while可以互换

2> while特点:如果一开始的条件不成立,永远不会执行循环体

   do-while特点:不管一开始的条件是否成立,至少会执行一次循环体

MJ老师说最好用while

 

4. for循环

格式:

for (语句1; 条件; 语句2)
 {

  }

 

例子:

for(int = 0;i<10;i++)

{

    printf("例子");

}

 

语句1:初始化语句

语句2:增量语句(执行完循环体后再执行的语句)

 

for循环注意点:

1> 不要随便在for()后面写分号

2> 如果要在循环体中定义新的变量,必须用大括号{}包住

3> 最简单的利用for循环实现死循环:for(;;);

 

五、break和continue的区别

break:直接结束整个while循环。注意点:只对最近的循环结构有效

continue:结束当前的循环体,进入下一次循环体的执行。注意点:只对最近的循环结构有效

 

六、sizeof运算符

sizeof是一种运算符不要想当然理解为函数

sizeof使用时可以不加()

sizeof可以加变量、常量、数据类型

跟数据类型是必须加()

 

七、常量区、堆区和栈区

内存的分布:可编程内存在基本上分为这样的几大部分,静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。

静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。

栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在最后才释放掉动态内存。但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。

 

八、输出格式

%p 输出地址
%c 一个字符  %s 一个字符串,遇空格、制表符或换行符结束。 
%d 十进制整数 %ld长整型  %lld:longlongint %hd:shortint  %zd  unsigned long、
%i 十进制整数 %o 八进制形式输出整数   %x 十六进制形式输出整数  
%f,%F,%e,%E,%g,%G用来输入实数,可以用小数形式或指数形式输入。 
%u 读入一个无符号十进制整数%zd:无符号长整型unsignedlong

 

九、按位与,或,异或

按位与 &  都为1才为1

按位或 |  一个为1则为1

按位异或 ^

1> 相同数值进行异或,结果肯定是0,比如9^9

2> 交换 9^5^6 == 9^6^5

3> 任何数值跟0进行异或,结果还是原来的数值,9^0 == 9

4> a^b^a == a^a^b == 0^b == b

 

十、变量的内存分析

1> 内存寻址由大到小,优先分配内存地址比较大的字节给变量

2> 变量越先定义,内存地址就越大

3> 取得变量的地址:&变量名

4> 输出地址:%p

5> 一个变量一定先进行初始化,才能使用

 

十一、函数

1. 什么情况下定义函数

添加一个常用的新功能

2. 函数的定义格式

格式:

 返回值类型  函数名(形式参数列表)

 {

  函数体

 }

例子:

void test()

{

printf("条用了test函数");

}

 

关于三目运算:

int max(int x,int y)

{

int z;

z = x>y?x:y;//三目运算符  条件 ? 数值1 : 数值2

return z;

}


 

3. 定义函数的步骤

1> 根据函数的作用,起一个有意义的名称

2> 确定函数的形参个数

3> 确定函数的返回值

 

4. 参数注意点

1> 形式参数:定义函数时函数名后面中的参数,简称形参

2> 实际参数:调用函数式传入的具体数据,简称实参

3> 实参个数必须等于形参个数

4> 函数体内部不能定义和形参一样的变量

5> 如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值

6> 一个函数可以没有形参,也可以有无限多个形参

 

5. 函数注意点

1> 默认情况下,不允许有函数的名称一样

2> 函数不能嵌套定义

3> 函数不能重复定义,但是可以重复声明

4> 如果有函数的声明,没有函数的定义

 

十二、指针

格式:

变量类型 *变量名;

 

指针就一个作用:能够根据一个地址值,访问对应的存储空间

  

int *p只能指向int类型的数据

 

int *p;

 double d = 10.0;

 p = &d;


 

指针变量只能存储地址

int *p;

p = 200;

 

指针变量未经过初始化,不要拿来间接访问其他存储空间

int *p;

printf("%d\n", *p);

 

小总结

1> 定义变量时的*仅仅是一个象征,没有其他特殊含义

2> 这个时候的*的作用:访问指向变量p指向的存储空间

3> 清空指针后,不能再间接访问其他存储空间

4> 任何指针都占用8个字节的存储空间

 

十三、字符串

定义字符串的2种方式

1> 利用数组

char name[] = "itcast";

 

特点:字符串里面的字符是可以修改的

使用场合:字符串的内容需要经常修改

 

2> 利用指针

char *name = "itcast";

 

特点:字符串其实是一个常量字符串,里面的字符是不能修改

使用场合:字符串的内容不需要修改,而且这个字符串经常使用

 

先写到这里吧,累了,明后天再把剩下的补一补,撒花!*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值