今日学习任务 |
c语言基础知识学习,包括:指针、指针和变量、指针和数组、指针和字符串等内容 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
|
本日任务按计划完成: 1、回顾编写字符串插入字符程序与洗牌发牌程序。 2、指针的内存分配,定义、初始化及遍历。 3、指针和变量的关系及指针变量的使用步骤。 4、指针与一维数组的关系及互换使用。 5、字符数组和字符串的区别。 |
今日开发中遇到的问题汇总 |
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给指针变量赋地址 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[]定义的是指针数组,他是一个存放地址的数组。 |
自我评价 (是否规范完成指定任务,需要改进的地方,与他人合作等。) |
在指针方面还是存在一定欠缺,不能清晰地明白那些指示一个地址,哪些指示的是一个值;但在这节课中,向老师学会了画图求解思路的方法。 |
其他 |
无 |
题目:编写一个C函数,将”I am from shanghai”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词的内部结构?
程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 4
int main()
{
int i;
char t[20];
char *str[SIZE]={0};
printf("input:\n");
for(i=0;i<SIZE;i++)
{
str[i]=(char*)malloc(sizeof(char)*30);
if(NULL==str[i])
{
printf("malloc failure!\n");
return(-1);
}
scanf("%s",str[i]);
}
for(i=0;i<SIZE/2;i++)
{
strcpy(t,str[i]);
strcpy(str[i],str[SIZE-i-1]);
strcpy(str[SIZE-i-1],t);
}
printf("the last string:\n");
for(i=0;i<SIZE;i++)
{
printf("%-10s",str[i]);
}
while(1);
return 0;
}