12.11  代码段   稍后做结构体的整理与分享

 

 

12.11  代码段   稍后做结构体的整理与分享

 

结构体基础1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct 
{
	char a[64] ; 
	int len ; 
} s1 ; 

struct s2{
	char a[64];
	int len ;
};   // 结构体的话只能在前面放 ,不能够在后面放的  不然就会报错  

struct Person2 
{
	char name[64];
	int age ; 
}myPerson3 = {"数额呢",21};   // 可以在结构体后面直接给这个结构体一一个初值,后面直接引用 

struct Public
{
	char name[11] ; 
	int age ; 
} ;

void text01()
{
	s1 myPerson = {"顺",12}; 
	struct s2 myPerson2 = {"树森",32};
	myPerson3.age = 100 ;
	printf("myPerson3 %d\n",myPerson3.age);
}

void text03()
{
	// 在栈区创建一个结构体变量
	struct Person2 ss1 = {"树森",1111};
	// 在堆区上创建一个结构体变量 
	struct Person2 * ss2 = malloc(sizeof (struct Person2)); 
	ss2->age = 11 ;
	strcpy(ss2->name,"树森");    // 为啥C语言结构体变量只能够用strcpy 
}

void text04()
{
	// 结构体数组     在栈上创建
	struct Person
	{
		char name[11];
		unsigned int age ;
	} ;
	
	struct Person persons[] = {
			{"树森",13},
			{"量子",12},
			{"QQQQ",16},
 } ;
 	// 打印这个结构体指针
	int i ;
	int len = sizeof persons / sizeof(struct Person) ; 
	for (i=0;i<len;i++)
	{
		printf("姓名是 %s年龄是 %d\n",persons[i].name,persons[i].age);
	}	
}
	
void text05()
{
	// 在堆上创建一个结构体指针
	struct Public *persons = malloc(sizeof(struct Public)*3) ; 
	int i ;
	for (i=0;i<3;i++)
	{
		sprintf(persons[i].name,"name_%d",i) ; // sprintf 1要被替换的变量 2 变换的字符串 3字符串中的%s 和%d的映射变量
		persons[i].age = i+ 11 ; 
	}
	
	// 打印出这个结构体指针
	for (i=0;i<3;i++)
	{
		printf("年龄是  %s  现在的年龄是 %d\n",persons->name,persons->age);
		printf("年龄是  %s  现在的年龄是 %d\n",persons[i].name,persons[i].age);
		printf("%\n");
	 } 
}




int main(void)
{
//	text01();
//	text04(); 
	text05();	
 } 

 

结构体基础2

#include <stdio.h>




void  text01()
{
	// 测试结构体的赋值
	struct Person
	{
		char name[64] ;
		int age ;
	} ;
	 
	 
	struct Person person1 = {"树森",11};
	struct Person person2 = {"真撒加快了的",22};
	 
	 
	printf("name is %s  age is %d\n",person1.name ,person1.age) ;
	printf("name is %s  age is %d\n",person2.name ,person2.age) ;	
	
	
	person2 = person1 ; 
	printf("相等之后可以知道:\n") ;
	// 由此观之   结构体 是可以直接赋值的  但是要考虑他们的属性是否相同 
	printf("name is %s  age is %d\n",person1.name ,person1.age) ;
	printf("name is %s  age is %d\n",person2.name ,person2.age) ;	
}


int main(void)
{
	text01();
}




 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值