C语言基础知识学习日志—2018.07.11



学习日志                     姓名:   王瑶           日期: 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使用指针变量运算

8char *p;*p指向随机内存,仅为p分配4个字节内存,并未给随机空间分配,不可以使用,p为野指针,指向不能使用的内存空间。

9char *p=char *)malloc(sizeof(char)*64)//申请64字节内存//malloc只能返回void *类型的首地址,所以需要强制类型转换,需结合#include<stdlib.h>使用。

10char *ptr;//野指针

ptr="helloword"//合法 指针的赋值

char str[20];//在栈上面分配20个字节内存,str值固定,是一个常指针

str=helloword//不合法 常量 存放在代码段 有固定地址,是相当于修改一个指针常量

str是常量 不能修改,ptr是变量,可以修改。

11、malloc要结合头文件#include<stdlib.h>使用,strcmp是比较函数,要结合头文件#include<string.h>使用

12、char *string[]定义的是指针数组,他是一个存放地址的数组。

自我评价

(是否规范完成指定任务,需要改进的地方,与他人合作等。)

在指针方面还是存在一定欠缺,不能清晰地明白那些指示一个地址,哪些指示的是一个值;但在这节课中,向老师学会了画图求解思路的方法。

            其他

 

  1. 题目:编写一个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;

    }

猜你喜欢

转载自blog.csdn.net/qq_40616514/article/details/81006224