学习日志 姓名:刘易中 日期:2018/7/11
今日学习任务 | 与指针相关的编程方法 |
今日任务完成情况 (详细说明本日任务是否按 计划完成,开发的代码量) | 指针和变量之间的关系,判断研究代码运行的结果。 指针变量的合法赋值,申请内存(通过malloc,其返回值是void*,用强制类型转换将其返回值转换为char *)。 用数组形式实现在字符串中插入一个字符修改为用指针形式实现在字符串中插入一个字符,现学现用,举一反三。 编写一个字符串逆序的代码(实现正着输入一个字符串,使它反着输出的功能。) 指针和数组的关系。字符数组跟字符串的区别。 |
今日开发中出现的问题汇总 | (*p1)++,*p1++之间的区别。 利用指针运算实现库函数strcpy。 |
今日未解决问题 | 无 |
今日开发收获 | (*p1)++是x的内容加1 *p1++是先求*p1的值(x),然后再p1++,指向下一个元素,不再指向x. 单元的地址就是指针内容。&是取地址的运算符,*是用来表示指针运算符的,是取值的运算符。不管是什么类型的指针,它的长度都是4个字节(在32位的操作系统之中)。指针和指针之间是可以相互赋值的。 *的两层含义:1、定义时表示变量是一个指针。2、使用时表示取值的意思。 字符可以直接进行复制,字符串不可以。 |
其他 | 无 |
作业:
编写一个C函数,将“I am from shanghai”倒置为“shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str[] = { "I", "am","from","shanghai" ,NULL};
int i = 0;
int j = 0;
int len = 0;
char *temp;
while (str[i] != NULL)
{
i++;
len++;
}
for(i = 0, j = len - 1; j > i; i++,j--)
{
temp =*(str+i);
*(str+i) = *(str+j);
*(str+j) = temp;
}
for(i = 0; i < len; i++)
{
printf("%s ", *(str+i));
}
printf("\n");
return 0;
}