学习日志 | 姓名:孙双 日期:2018/7/12 |
今日学习任务 | 1.函数和指针 2.函数指针变量 3.指针型函数 4.二维数组和指针 5.二维数组与一维数组指针变量的关系 6.指针的指针 7.命令行参数 |
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) | 1.函数指针的使用 2.用函数指针实现冒泡排序的从小到到,从大到小排序 3.用指针函数输出一个函数 4.int(*p)()和int*p()区别 5.二维数组与指针运算 6.二维数组的两种访问方式 7.输出命令行参数 |
今日开发中出现的问题汇总 | int*(*(*fp)(int))[10];//fp是一个指针指向函数,函数有一个int类型参数,函数的返回值是一个指针,指向一个有10个元素的数组,每个元素都是一个整型指针。 int *(*(*array[5]())();//指针函数指针函数指针数组 array是一个数组,有五个元素,元素是指针类型,指向一个函数,函数没有形参,返回值是一个指针,指向一个函数,函数没有形参,,返回值是一个整形指针。 a)一个整型数 int a g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数 int(*a)(int) h) 一个有10个函数指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 int (*a[10])(int) a[4][3] &a 数组的地址 单位 48字节 a 首行地址 单位16字节 a[0],*(a+0),*a首行首元素地址 单位4字节 a+1,&a[1] 第二行地址 单位16字节 a[1],*(a+1) 第1行第0列元素地址 单位4字节 a[1]+2,*(a+1)+2,&a[1][2] 第一行第二列元素地址 *(a[1]+2),*(*(a+1)+2),a[1][2] 第一行第二列元素值 |
今日未解决问题 | 用命令行参数实现字符串排序,冒泡排序。 |
今日开发收获 | 通过今天的学习了解了函数指针变量,以及函数名前加‘’*‘’是指针型函数,它的返回值是地址。int(*p)()函数指针,int *p()指针函数,明白了指针数组这一概念。也理解了二维数组与一维数组指针变量的关系。 |
自我评价
(是否按开发规范完成
既定任务,需要改进的地方,与他人合作效果等) | 今天还是学的指针,依旧是不太了解,有的知识点还是不太了解。 |
其他 | |
命令行参数方式:
字符串排序:
#include<stdio.h>#include<string.h>
#include<stdlib.h>
#define SIZE 10
void sort(char *a[],int length)
{char *tmp;
int i,j;
for(i=0;i<length-1;i++)
{
for(j=0;j<length-i-1;j++)
if(strcmp(a[j],a[j+1])>0)
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
int main(int argc,char *argv[])
{
int i;
char *string[SIZE]={0};
sort(argv,argc-1);
for(i=1;i<argc;i++)
{
printf("%s ",argv[i]);
}
printf("\n");
return 0;
}
2、冒泡排序程序
程序代码:
#include <stdio.h>#define SIZE 10
void sort(*a[],int argc)
{
int j;int tmp;int i;
for(i=0;i<argc;i++)
{
for(j=0;j<argc-i-1;j++)
{
if(a[j]<a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
void print(int *a[],int argc)
{
int i;
for(i=0;i<argc;i++)
{
printf("%d\n" ,a[i]);
}
}