函数,相当于把大的任务拆分成小的模块,一般一个函数不超过80行
每个程序只有一个主函数
输出数据只能是一个。有多个返回值的时候可以使用一个参数
函数声明:只写函数头,不写函数体;
在函数声明时,可以省略参数列表的参数名,只写参数类型
参数:1、传值 2、传地址(指针) 3、传引用(C++内容)
传值方式,在函数调用时,把实参值的一份拷贝,赋值给形参;
可以写一个例子测试:
#include "stdafx.h"
void swap(int,int);
int main(int argc, char* argv[])
{
int a = 111;
int b = 88;
printf("a=%d,b=%d",a,b);
function(a);
swap(a,b);
return 0;
}
void swap(int y,int z){
int temp = 0;
temp = y;
y = z;
z = temp;
printf("a=%d\nb=%d\n",y,z);
}
内联函数:用被调函数的函数体代码,替换掉函数调用语句。这个替换是在编译期间发生。
好处:避免函数调用的时间开销,提高运行效率。
代价:增加了内存的空间开销。所以,内联函数要尽量短小。
函数重载:两个函数名字一样,参数不一样(参数个数不同、参数类型不同),成为函数重载。
重写:在不同的类之间进行的
#include "stdafx.h"
int square(int);
float square(float);
int main(int argc, char* argv[])
{
int a = 2;
float b = 0.5;
printf("a=%d\n",square(a));
printf("b=%f\n",square(b));
return 0;
}
int square(int i){
return i*i;
}
float square(float j){
return j*j;
}
指针:变量的地址 (4字节的整数 只保存地址 可以有多个指针指向同一地址)
声明指针变量:char* p = &a;//p指向a p是物理地址(绝对地址)
用%p来显示这个地址
int a = 2;
int* p = &a;//指针的声明
printf("p value is %p\n",p);
printf("a address is %p\n",&a);
*来写入内存空间的值 *p = 8898; //a = 8898;
使用指针实现两个数的交换
#include "stdafx.h"
int change(int *,int *);
int main(int argc, char* argv[])
{
int a = 2;
int b = 4;
printf("a=%d,b=%d\n",a,b);
change(&a,&b);
printf("a=%d\nb=%d\n",a,b);
return 0;
}
int change(int *x,int *y){
int temp;
temp = *x;
*x = *y;
*y = temp;
return *x,*y;
}
二级指针
#include "stdafx.h"
int *smaller(int *px,int *py);
int main(int argc, char* argv[])
{
int a;
int b;
int *p;
scanf("%d %d",&a,&b);
p = smaller(&a,&b);
printf("smller = %d\n",*p);
return 0;
}
int *smaller(int *px,int *py){
return (*px>*py?py:px);
}
三级指针(指向的是同一地址,但是它们的地址分别不同)
int a=11;
int *p;
int **pp;
p = &a;
pp = &p;
printf("%p\n",a);
printf("%p\n",p);
printf("%p\n\n\n",pp);
printf("%p\n",a);
printf("%p\n",*p);
printf("%p\n",**pp);
注:本博文为个人总结,如果有不当之处请指出,本文会有些散乱,请谅解!如需转载,请注明出处。
2012年3月4日