姓名: 艾志奇 日期: 2018.07.12
今日学习任务 | 指针与函数,指针数组,数组指针,指针的指针,命令行参数 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
| 今日任务已按计划完成。在老师的指导下编写了单词位置倒置,不改变单词内部结构;函数指针的实现;字符串排序;指针型函数的实现;用指针输出数组;指针的指针的用法等程序。
|
今日开发中遇到的问题汇总 | 指针中值传递与地址传递 |
今日未解决问题 | 无 |
今日开发收获 | 1.指向【二维数组】的指针几种表示方式: [&a] 数组的地址,代表整个数组 单位48字节 [a ] 数组首行地址 单位16字节 [a[0]/ *a/ *(a+0)] 首行首元素地址 4字节 [a+1 /&a[1] ] 第二行首地址 16字节 [a[1]/ *(a+1) ] 第二行第0列元素地址 2.命令行参数 int main(int argc,char *argv[]) argc:参数的个数 argv:具体参数,保存参数 3.函数指针:int(*pf)();表示pf是一个指向函数入口的指针变量,该函数的返回值是整型 指针函数:返回值是一个指针 int *p() 4.运用右左规则判读是指针还是数组 5. int *p=&a;//p是一个指针,指向a,保存a的地址 int **q=&p;//q是指针的指针,保存p的地址 int ***t=&q;//保存q的地址
|
自我评价 (是否规范完成指定任务,需要改进的地方,与他人合作等。) | 名称类似的几个名词概念不清,读程序有困难,听得懂但是自己不会写,希望能通过对指针程序的消化取得进步。 |
其他 | 无 |
|
|
学习日志 姓名: 王瑶 日期: 2017.07.11
今日学习任务 | c语言基础知识学习,包括:指针、指针和变量、指针和数组、指针和字符串等内容 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
| 本日任务按计划完成: 1、回顾编写字符串插入字符程序与洗牌发牌程序。 2、指针的内存分配,定义、初始化及遍历。 3、指针和变量的关系及指针变量的使用步骤。 4、指针与一维数组的关系及互换使用。 5、字符数组和字符串的区别。 6、以上学习均结合编程,结合以前编写的代码用指针编写,学习编写字符串复制程序、字符串逆序输出程序、及各类指针初始化遍历等程序约8个。 |
今日开发中遇到的问题汇总 | 1、使用scanf(“%c”,&c);输入时会直接跳过输入输出下面的(回车键也算字符) 2、printf(“%s\n”,str);输出时后面会出现乱码(分配空间比使用的要多,但printf要遇见\0才会结束) |
今日未解决问题 | 无 |
今日开发收获 | 1、指针是变量的一种,里面是一个地址,通过地址找到所要找的数据,单元的地址就是指针的内容。 2、无论是什么类型的指针都是四个字节。 3、定义什么类型的指针,就指向什么类型的变量。 4、*有两层含义:定义的时候:表示变量是一个指针、 使用的时候:取值。 5、y=*px++//先px地址取值,然后px加加。 6、(*p)++和*p++区别,前者是值加,后者是址加。 7、指针变量的使用步骤: 1定义一个指针 2给指针变量赋地址 3使用指针变量运算 8、char *p;*p指向随机内存,仅为p分配4个字节内存,并未给随机空间分配,不可以使用,p为野指针,指向不能使用的内存空间。 9、char *p=(char *)malloc(sizeof(char)*64)//申请64字节内存//malloc只能返回void *类型的首地址,所以需要强制类型转换,需结合#include<stdlib.h>使用。 10、char *ptr;//野指针 ptr="helloword"//合法 指针的赋值 char str[20];//在栈上面分配20个字节内存,str值固定,是一个常指针 str=“helloword”//不合法 常量 存放在代码段 有固定地址,是相当于修改一个指针常量 str是常量 不能修改,ptr是变量,可以修改。 11、malloc要结合头文件#include<stdlib.h>使用,strcmp是比较函数,要结合头文件#include<string.h>使用 12、char *string[]定义的是指针数组,他是一个存放地址的数组。 |
自我评价 (是否规范完成指定任务,需要改进的地方,与他人合作等。) | 在指针方面还是存在一定欠缺,不能清晰地明白那些指示一个地址,哪些指示的是一个值;但在这节课中,向老师学会了画图求解思路的方法。 |
其他 | 无 |
学习日志 姓名: 王瑶 日期: 2017.07.11
今日学习任务 | c语言基础知识学习,包括:指针、指针和变量、指针和数组、指针和字符串等内容 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
| 本日任务按计划完成: 1、回顾编写字符串插入字符程序与洗牌发牌程序。 2、指针的内存分配,定义、初始化及遍历。 3、指针和变量的关系及指针变量的使用步骤。 4、指针与一维数组的关系及互换使用。 5、字符数组和字符串的区别。 6、以上学习均结合编程,结合以前编写的代码用指针编写,学习编写字符串复制程序、字符串逆序输出程序、及各类指针初始化遍历等程序约8个。 |
今日开发中遇到的问题汇总 | 1、使用scanf(“%c”,&c);输入时会直接跳过输入输出下面的(回车键也算字符) 2、printf(“%s\n”,str);输出时后面会出现乱码(分配空间比使用的要多,但printf要遇见\0才会结束) |
今日未解决问题 | 无 |
今日开发收获 | 1、指针是变量的一种,里面是一个地址,通过地址找到所要找的数据,单元的地址就是指针的内容。 2、无论是什么类型的指针都是四个字节。 3、定义什么类型的指针,就指向什么类型的变量。 4、*有两层含义:定义的时候:表示变量是一个指针、 使用的时候:取值。 5、y=*px++//先px地址取值,然后px加加。 6、(*p)++和*p++区别,前者是值加,后者是址加。 7、指针变量的使用步骤: 1定义一个指针 2给指针变量赋地址 3使用指针变量运算 8、char *p;*p指向随机内存,仅为p分配4个字节内存,并未给随机空间分配,不可以使用,p为野指针,指向不能使用的内存空间。 9、char *p=(char *)malloc(sizeof(char)*64)//申请64字节内存//malloc只能返回void *类型的首地址,所以需要强制类型转换,需结合#include<stdlib.h>使用。 10、char *ptr;//野指针 ptr="helloword"//合法 指针的赋值 char str[20];//在栈上面分配20个字节内存,str值固定,是一个常指针 str=“helloword”//不合法 常量 存放在代码段 有固定地址,是相当于修改一个指针常量 str是常量 不能修改,ptr是变量,可以修改。 11、malloc要结合头文件#include<stdlib.h>使用,strcmp是比较函数,要结合头文件#include<string.h>使用 12、char *string[]定义的是指针数组,他是一个存放地址的数组。 |
自我评价 (是否规范完成指定任务,需要改进的地方,与他人合作等。) | 在指针方面还是存在一定欠缺,不能清晰地明白那些指示一个地址,哪些指示的是一个值;但在这节课中,向老师学会了画图求解思路的方法。 |
其他 | 无 |
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int SIZE;
int big(int x,int y) //倒序
{
return (x>y)?1:0; //条件判断
}
int less(int x,int y) //顺序
{
return (x>y)?0:1;
}
void sort(char **a,int(*p)(int,int))//定义加接地址
{
int i,j;
char *tmp;
for(i=1;i<SIZE;i++)
{
for(j=1;j<SIZE+1-i;j++)
{
if(p(atoi(a[j]),atoi(a[j+1])))//调用p指向的函数,返回值作为判断
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
void print(char **a)
{
int i;
for(i=1;i<SIZE+1;i++)
{
printf("%s ",a[i]);
}
}
main(int argc,char *argv[])
{
SIZE=argc-1;
sort(argv,less);//传一个函数地址进去,用函数指针来接
print(argv);
}
学习日志 姓名: 王瑶 日期: 2017.07.11
今日学习任务 | c语言基础知识学习,包括:指针、指针和变量、指针和数组、指针和字符串等内容 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
| 本日任务按计划完成: 1、回顾编写字符串插入字符程序与洗牌发牌程序。 2、指针的内存分配,定义、初始化及遍历。 3、指针和变量的关系及指针变量的使用步骤。 4、指针与一维数组的关系及互换使用。 5、字符数组和字符串的区别。 6、以上学习均结合编程,结合以前编写的代码用指针编写,学习编写字符串复制程序、字符串逆序输出程序、及各类指针初始化遍历等程序约8个。 |
今日开发中遇到的问题汇总 | 1、使用scanf(“%c”,&c);输入时会直接跳过输入输出下面的(回车键也算字符) 2、printf(“%s\n”,str);输出时后面会出现乱码(分配空间比使用的要多,但printf要遇见\0才会结束) |
今日未解决问题 | 无 |
今日开发收获 | 1、指针是变量的一种,里面是一个地址,通过地址找到所要找的数据,单元的地址就是指针的内容。 2、无论是什么类型的指针都是四个字节。 3、定义什么类型的指针,就指向什么类型的变量。 4、*有两层含义:定义的时候:表示变量是一个指针、 使用的时候:取值。 5、y=*px++//先px地址取值,然后px加加。 6、(*p)++和*p++区别,前者是值加,后者是址加。 7、指针变量的使用步骤: 1定义一个指针 2给指针变量赋地址 3使用指针变量运算 8、char *p;*p指向随机内存,仅为p分配4个字节内存,并未给随机空间分配,不可以使用,p为野指针,指向不能使用的内存空间。 9、char *p=(char *)malloc(sizeof(char)*64)//申请64字节内存//malloc只能返回void *类型的首地址,所以需要强制类型转换,需结合#include<stdlib.h>使用。 10、char *ptr;//野指针 ptr="helloword"//合法 指针的赋值 char str[20];//在栈上面分配20个字节内存,str值固定,是一个常指针 str=“helloword”//不合法 常量 存放在代码段 有固定地址,是相当于修改一个指针常量 str是常量 不能修改,ptr是变量,可以修改。 11、malloc要结合头文件#include<stdlib.h>使用,strcmp是比较函数,要结合头文件#include<string.h>使用 12、char *string[]定义的是指针数组,他是一个存放地址的数组。 |
自我评价 (是否规范完成指定任务,需要改进的地方,与他人合作等。) | 在指针方面还是存在一定欠缺,不能清晰地明白那些指示一个地址,哪些指示的是一个值;但在这节课中,向老师学会了画图求解思路的方法。 |
其他 | 无 |
//字符串排序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int SIZE;
int big(char *x,char *y) //倒序
{
if(strcmp(x,y)>0)//条件判断
return 1;
else
return 0;
}
int less(char *x,char *y) //顺序
{
if(strcmp(x,y)<0)//条件判断
return 1;
else
return 0;
}
void sort(char **a,int(*p)(char *,char *))//定义加接地址
{
int i,j;
char *tmp;
for(i=1;i<SIZE;i++)
{
for(j=1;j<SIZE+1-i;j++)
{
if(p(a[j],a[j+1]))//调用p指向的函数,返回值作为判断
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
void print(char **a)
{
int i;
for(i=1;i<SIZE+1;i++)
{
printf("%s ",a[i]);
}
}
main(int argc,char *argv[])
{
SIZE=argc-1;
sort(argv,less);//传一个函数地址进去,用函数指针来接
print(argv);
}
学习日志 姓名: 王瑶 日期: 2017.07.11
今日学习任务 | c语言基础知识学习,包括:指针、指针和变量、指针和数组、指针和字符串等内容 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
| 本日任务按计划完成: 1、回顾编写字符串插入字符程序与洗牌发牌程序。 2、指针的内存分配,定义、初始化及遍历。 3、指针和变量的关系及指针变量的使用步骤。 4、指针与一维数组的关系及互换使用。 5、字符数组和字符串的区别。 6、以上学习均结合编程,结合以前编写的代码用指针编写,学习编写字符串复制程序、字符串逆序输出程序、及各类指针初始化遍历等程序约8个。 |
今日开发中遇到的问题汇总 | 1、使用scanf(“%c”,&c);输入时会直接跳过输入输出下面的(回车键也算字符) 2、printf(“%s\n”,str);输出时后面会出现乱码(分配空间比使用的要多,但printf要遇见\0才会结束) |
今日未解决问题 | 无 |
今日开发收获 | 1、指针是变量的一种,里面是一个地址,通过地址找到所要找的数据,单元的地址就是指针的内容。 2、无论是什么类型的指针都是四个字节。 3、定义什么类型的指针,就指向什么类型的变量。 4、*有两层含义:定义的时候:表示变量是一个指针、 使用的时候:取值。 5、y=*px++//先px地址取值,然后px加加。 6、(*p)++和*p++区别,前者是值加,后者是址加。 7、指针变量的使用步骤: 1定义一个指针 2给指针变量赋地址 3使用指针变量运算 8、char *p;*p指向随机内存,仅为p分配4个字节内存,并未给随机空间分配,不可以使用,p为野指针,指向不能使用的内存空间。 9、char *p=(char *)malloc(sizeof(char)*64)//申请64字节内存//malloc只能返回void *类型的首地址,所以需要强制类型转换,需结合#include<stdlib.h>使用。 10、char *ptr;//野指针 ptr="helloword"//合法 指针的赋值 char str[20];//在栈上面分配20个字节内存,str值固定,是一个常指针 str=“helloword”//不合法 常量 存放在代码段 有固定地址,是相当于修改一个指针常量 str是常量 不能修改,ptr是变量,可以修改。 11、malloc要结合头文件#include<stdlib.h>使用,strcmp是比较函数,要结合头文件#include<string.h>使用 12、char *string[]定义的是指针数组,他是一个存放地址的数组。 |
自我评价 (是否规范完成指定任务,需要改进的地方,与他人合作等。) | 在指针方面还是存在一定欠缺,不能清晰地明白那些指示一个地址,哪些指示的是一个值;但在这节课中,向老师学会了画图求解思路的方法。 |
其他 | 无 |