学习笔记


修改虚拟机ip ifconfig 加上ip地址
重启网络network restart

结构体
typedef struct Student

{
char name[32];
int age;

}Student;

内存分配
每次启动一个进程,系统会分配4G的内存空间,1G为内核空间剩下的为用户空间
用户空间:
1数据段:全局变量和静态变量
2代码段:代码和常量
3栈空间:局部变量和形参
4堆空间:操作系统管理的,比如malloc申请到的空间

结构体指针:
定义:struct Student *s3

作用:指向结构体的指针
申请空间:s3=(struct Student *)malloc(sizeof(struct Student))

释放空间:free(s3)

其中malloc遇到用到的头文件:#include<stdlib.h>

计算结构体占用的空间
原则:
1.结构体总长度是最长长度的整数倍,如果比四个字节长,最长长度按照4算
2每个长度的偏移量一定是这个长度的整数倍,超过四也是按照4来处理

用结构写简单的通讯录
要求:实现增删查改
/*****************************************************
> File name: tongxunlu.c
> Author: Mr.miao
> 日期: 2019-02-13 13:57
*****************************************************/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 5

int person=0;

typedef struct info
{
char name[32];
char tel[32];
int age;
}info;

void mean()
{
printf("\n\n\n");
printf(“\n");
printf(" 1:增加信息 2:修改信息 \n");
printf(" 3:查找信息 4:删除信息 \n");
printf(" 5:显示信息 6:退出 \n");
printf("
\n”);
}
void add(info *p)
{
char name[32]={0};
char tel[32]={0};
int age=0;
printf(“请输入姓名手机号年龄\n”);
scanf("%s %s %d",name,tel,&age);
strcpy(p[person].name,name);
strcpy(p[person].tel,tel);
p[person].age=age;
person++;
}

void modify(info *p)
{
int i;
int flag=-1;char name[32];
char name1[32]={0};//修改后的姓名,手机,年龄
char tel[32]={0};
int age=0;
printf(“请输入要修改人的姓名”);
scanf("%s",name);
for (i=0;i<person;i++)
{
if(strcmp(p[i].name,name)0)
{
flag=i;
break;
}
}
if (flag
-1)
{
printf(“没有这个人\n”);
}
else
{
printf(“请输入这个人的姓名,手机号,年龄\n”);
scanf("%s %s %d",name1,tel,&age);
strcpy(p[flag].name,name1);
strcpy(p[flag].tel,tel);
p[flag].age=age;
}

}

void seach(info *p)
{
int name[32];
int flag=-1;int i;
printf(“请输入要查找人的姓名\n”);
scanf("%s",name);
for (i=0;i<person;i++)
{
if (strcmp(p[i].name,name)0)
{
flag=i;
break;
}
}
if (flag
-1)
{
printf(“没有此人\n”);
}
else
{
printf("%s %s %d\n",p[flag].name,p[flag].tel,p[flag].age);
}

}

void delete(info *p)
{
char name[32];
int i,flag=-1;
printf(“请输入要删除人的姓名\n”);
scanf("%s",name);
for (i=0;i<person;i++)
{
if (strcmp(p[i].name,name)0)
{
flag=i;
break;
}
}
if (flag
-1)
{
printf(“没有这个人信息\n”);
}
else
{
for (i=flag;i<person;i++)
{
strcpy(p[i].name,p[i+1].name);
strcpy(p[i].tel,p[i+1].tel);
p[i].age=p[i+1].age;
}
person–;

}

}

void show(info *p)
{
int i;
for(i=0;i<person;i++)
{
printf("%s %s %d\n",p[i].name,p[i].tel,p[i].age);
}
}
int main()
{
int choise;
info aa[SIZE]={0};
while(1)
{
mean();
scanf("%d",&choise);
switch(choise)
{
case 1:
add(aa);
break;
case 2:
modify(aa);
break;
case 3:
seach(aa);
break;
case 4:
delete(aa);
break;
case 5:
show(aa);
break;
case 6:
exit(0);
default :
printf(“Error\n”);
}
}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值