苏嵌学习第三天

苏嵌 项目实战

学习日志 姓名:高瑞 日期:2018.7.11

今日学习任务    首先讲解了昨晚的题目 一个是字符数组中在指定位置插入字符,另一个是设计一个洗牌发牌的程序

2)掌握了指针的基本概念 学习了如何用指针实现strcopy

3)学习了指针的使用方法  里面有局部变量野指针 以及他们分配的地址的概念

4)进行了一个小测试 用指针实现字符串的逆序

5)下午学习了数组指针 指针与函数指针与字符串的使用方法

 今日任务完成情况

1)指针实现字符串逆序

char *begin;
char *ptr=(char *)malloc(sizeof(char)*32); 
printf("inpu\n");                                                               // char string[]="helloworld!";
// char *str="helloworld!"           
scanf(%s\n",ptr);
 
begin=ptr;
   ptr+=strlen(ptr)-1;


while(ptr>=begin)
{
    printf("%c",*ptr--);
}

2)数组指针与字符串排序的关键程序

sort (string)
  {
 int i,j;
 char *tmp;
  for(int i=0;i<SIZE-1;i++)
{
    for(int j=0;j<SIZE-i-1;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
  }

今日开发中出现的问题汇总

 1)数组指针中遇到几个字符串怎么输出

char *string[]={"I LOVE CHINA!","I am"};
printf("%s\n",string[0]);                                 //printf("%s\n",string[0或1]);
        while(1);
return 0;

 今日未解决问题

 今日开发收获

& 取地址符       &a = 0x100

* 取值           char *p = &a

* 有两层含义

定义的时候 表示变量是一个指针

使用的时候 取值

Int *p1,a;    p1指针 a是整形

P1=&a;

*p1=3;

指针作为函数参数 swap里面 的int*x int*y  &a,&b

指针运算

Int x=3,y=0,*px=&x;  

Y=*px+5;     y=8

Y=++*px;     y=4  ++

Y=*px++;     y=4   来的px就已经是4了


字符串逆序的程序

  int main()
       {
char *ptr = (char *)malloc(sizeof(char) * 64);
char *begin;
                if(NULL==ptr)
{
printf("malloc failure!\n");
return -1;
}
    
printf("input:\n");
scanf("%s",ptr);
begin = ptr;
ptr += strlen(ptr) - 1;
while (ptr >= begin)
{
printf("%c", *ptr--);
}
while(1);
return 0;

      }    

其中malloc函数是给指针分配地址

自我评价 

今天的学习觉得更加困难了 指针的相关知识比较混乱 之前也没怎么学好 指针的使用也比较多 

可以和数组 函数 字符串 等等实现很多的应用 衍生的程序比较多 比之前的函数数组难多了

回去会认真看书好好复习的 希望明天能听得懂


其他 

作业 

#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/martial1/article/details/81006644