苏嵌 项目实战
学习日志 姓名:高瑞 日期: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<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;
}