一、交换两个数的另类方法
第一种方法
{
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> 很多情况下,while和do 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";
特点:字符串其实是一个常量字符串,里面的字符是不能修改
使用场合:字符串的内容不需要修改,而且这个字符串经常使用
先写到这里吧,累了,明后天再把剩下的补一补,撒花!*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。