函数的指针
可通过该指针调用该函数
定义:函数指针是函数的物理入口地址,即在编译时,分配的物理入口地址。
格式:类型 (*指针变量名)(); int (*p)();
这里的类型是指函数返回值类型。
调用:(指针变量名)(实参列表);
( p)();或者p();
对于函数指针,p++,p+n等等无意义。
函数返回指针的注意事项
局部变量地址不能返回。
解决方法:
1.全局变量地址
2.动态分配内存空间
3.静态局部变量
数组
同质,有序,连续。注意下标的越界问题!
强类型,必须先定义后使用;线性排列。
static int a[4];等价于static int a[4]={0,0,0,0};
随机函数的使用方法
头文件#include<time.h>
初始化srand((unsigned)time(NULL));
例、将二维数组的每行的最小元素排序将每行交换。
#include <stdio.h>
#include <time.h>
int main()
{
int i,j;
int a[5][5];
srand((unsigned)time(NULL));
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
a[i][j] = rand() % 100;
printf("%4d",a[i][j]);
}
printf("\n");
}
//查出每行的最小值
int min;
int array[5];
for(i = 0;i < 5;i++)
{
min = 0;
for(j = 1;j < 5;j++)
{
if(a[i][min] > a[i][j])
{
min = j;
}
array[i]=a[i][min];
}
}
printf("\n");
int temp;
int n;
int k;
int p;
//冒泡排序
for(i = 1;i < 5;i++)
{
for(n = 4;n >= i;n--)
{
if(array[n] < array[n-1])
{
temp = array[n-1];
array[n-1] = array[n];
array[n] = temp;
for(k = 0;k < 5;k++)
{
p = a[n-1][k];
a[n-1][k] = a[n][k];
a[n][k] = p;
}
}
}
}
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}