学习日志 姓名:叶圣民 日期:2018.07.17.
|
|
今日学习任务
|
|
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) |
指针是一个变量,用来保存地址;
C语言可以直接访问地址; (CPU:存储器:寄存器,cache)
指针一定是相同的类型的指针赋值; *(取值运算符) : 取指针的内存空间内保存的地址对应的内存空间的值 &(取地址运算符) 局部指针未初始化,该指针师野指针(随机指向地址)
提高代码的复用性——> 实现模块化开发
①函数的声明 ②函数的定义 ③形参和实参 ④函数的返回值
|
今日开发中出现的问题汇总
|
指针的使用;指向指针的指针的使用,不太明白原理;
|
今日未解决问题
|
无 |
今日开发收获 |
学会了简单的使用指针表示字符串,字符串的循环输出,指针对指针的赋值; |
自我评价
(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)
|
需要多多练习指针的使用;跟深刻的理解指针的原理; |
一、输出各个类型的指针的字节长度
#include <stdio.h>
int main()
{
printf("char_len * = %2d\n",sizeof(char *));
printf("int_len * = %2d\n",sizeof(int *));
printf("short_len * = %2d\n",sizeof(short *));
printf("long_len * = %2d\n",sizeof(long *));
printf("float_len * = %2d\n",sizeof(float *));
printf("double_len * = %2d\n",sizeof(double *));
return 0;
}
二、循环输出键盘读取的字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN sizeof(char)*50
int main()
{
char * ptr = (char *) malloc(MAX_LEN);
char * temp = ptr;
if(ptr != NULL)
{
memset(ptr,0,MAX_LEN);
scanf("%s",ptr);
temp = ptr;
while(*temp != '\0')
{
printf("%c\n",*temp);
temp++;
}
free(ptr);
ptr = NULL;
}
else
{
printf("malloc error!\n");
exit(1);
}
return 0;
}
三、
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN sizeof(char)*100
int main()
{
char *ptr = (char *) malloc(MAX_LEN);
char *p = (char *) malloc(MAX_LEN);
char *temp = ptr;
int count = 0;
int max = 0;
int i;
// char q;
char *temp1 = p;
//char s;
if(ptr == NULL || p == NULL)
{
printf("malloc error!\n");
exit(1);
}
memset(ptr,0,MAX_LEN);
memset(p,0,MAX_LEN);
printf("Please input string:\n");
scanf("%s",ptr);
temp = ptr;
#if 0
while(1)
{
#endif
while(*temp != '\0')
{
if((*temp >= '0') && (*temp <= '9'))
{
count++;
if(count > max)
{
max = count;
temp1 = p;
for(i = 0;i < max;i++)
{
*(p + i) = *(temp - max + i + 1);
}
*(p + i) = '\0';
}
}
else
{
count = 0;
}
temp++;
}
printf("The length = %d\n",max);
printf("result = %s\n",temp1);
#if 0
printf("quit?(y/n)\n");
scanf("%c",&q);
if(q == 'y')
{
goto out;
}
printf("Please input string:\n");
scanf("%s",ptr);
#endif
// }
#if 0
out:
printf("quit!\n");
#endif
free(ptr);
free(p);
p = NULL;
ptr = NULL;
//}
return 0;
}
四、子函数的定义(未完成)
#include <stdio.h>
typedef signed int Int;
void exchange(Int number1,Int number2)
{
Int number;
number = number1;
number1 = number2;
number2 = number;
}
int main()
{
Int number1;
Int number2;
printf("输入两个数交换数值\n");
printf("请输入数值 1 :");
scanf("%d",&number1);
printf("请输入数值 2:");
scanf("%d",&number2);
exchange(number1,number2);
printf("number1 = %d\n",number1);
printf("number2 = %d\n",number2);
return 0;
}