分类: C/C++
2011-05-08 16:17:24
1、编写一个函数,能过指针来进行地地址的传递
#include
//传入的是地址会影响外部变量的值μ
void swap(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int a = 1;
int b = 2;
swap(&a,&b);
printf("a=%d b=%d\n",a,b);
}
2、写一个函数,传入数组的首地址,进行排序
/******************************************
文件名:
说 明:排序
Autor:Lzy
Time :2011-5-6
*******************************************/
#include
#include
#include
/******************************************
函数名:order()
说 明:传入数组首地址,直接修改数组
*******************************************/
void order(int *ptr)
{
int i,j,temp;
for(i = 0; i < 9; i++)
{
for(j = i; j < 10; j++)
{
if(*(ptr+i) > *(ptr+j))
{
temp = *(ptr+i); /*保存较大的值*/
*(ptr+i) = *(ptr+j); /*较小的值前移*/
*(ptr+j) = temp; /*较大的值后移*/
}
}
}
}
int main()
{
int data[10];
int i;
int *ptr;
printf("产生十个百以内的随机数:\n");
srand((unsigned)time(NULL)); /*随机种子*/
for(i = 0; i < 10; i++)
{
data[i] = rand() % 100; /*产生百以内的随机数*/
printf("%d ", data[i]);
}
order(data);
printf("\n递增排序后的结果:\n");
for(i = 0; i < 10; i++)
printf("%d ",data[i]);
printf("\n");
}
3、函数指针,通过函数指针来调用函数
#include
#include
void fun(int); /* 函数声明 */
int main()
{
int x = 6;
void (*p)(int); /* 定义函数指针变量 */
p = &fun; /* 将fun函数的首地址赋给函数指针变量p*/
fun(x); /* 直接调用fun函数 */
(*p)(x); /* 通过函数指针变量p调用fun函数 */
return 0;
}
void fun(int x) /* 函数定义 */
{
printf("%d\n", x);
}
4、编写一个程序,将函数指针作为函数参数来使用
#include
#include
typedef void (*FunType)(int, int); /* 定义函数指针类型FunType */
void add(int, int); /* 函数声明 */
void sub(int, int);
void fun(FunType, int, int);
int main()
{
int a = 2;
int b = 3;
fun(add, a, b); /* 将函数指针作为参数调用fun函数 */
fun(sub, a, b);
return 0;
}
void add(int a, int b) /* 两数相加 */
{
int result;
result = a + b;
printf("%d + %d = %d\n", a, b, result);
}
void sub(int a, int b) /* 两数相减 */
{
int result;
result = a - b;
printf("%d - %d = %d\n", a, b, result);
}
void fun(FunType p, int a, int b) /* 函数的参数为函数指针 */
{
(*p)(a, b);
}
5、普通变量与表态变量之间的差异
#include
#include
void func(); /* 函数声明 */
int main(void)
{
printf("Fisrt call func():\n");
func(); /* 第一次调用函数func */
printf("Second call func():\n");
func(); /* 第二次调用函数func */
return 0;
}
void func() /* 函数定义 */
{
int a=0; /* 定义自动局部变量a */
static b=0; /* 定义静态局部变量b */
a++;
b++;
printf("a = %d\nb = %d\n",a,b);
}
一小时——第二部分:Linux C