struct结构体使用

       在结构体的使用中,常会发现结构体内发现有指针变量或者用到结构体指针。在具体的使用过程中我们可以如下定义与引用就可以实现指针的正确使用:

#include "stdafx.h"
#include <stdlib.h>   
#include <string.h> 
//typedef int num;


struct class1
{
  char name[15];
  char *boy;
  int num;
};
class1 *a;
class1 a1;
int _tmain(int argc, _TCHAR* argv[])
{


//结构体指针*a内部的初始化
a= (class1 *)malloc(sizeof(class1));  //结构体指针需要初始化 
a->boy = (char*)malloc(sizeof(char)); //结构体指针的成员指针同样需要初始化,并且结构体成员的指针的初始化必须放
                                                                    //在结构体指针之后,否者不可以执行
strcpy(a->name,"Lucy"); //将Lucy写入name              
strcpy(a->boy,"Los");
a->num=1;
printf("%s\n",a->name);
printf("%s\n",a->boy);
printf("%d\n",a->num);
printf("------------------------------------------\n");


//结构体的a1的初始化
a1.boy=(char*)malloc(sizeof(char));//结构体的指针需要初始化
strcpy(a1.boy,"Jimy");//将Jimy写入
strcpy(a1.name,"zhuzhu");//将zhuzhu写入
a1.num=1;
printf("%s\n",a1.name);
printf("%s\n",a1.boy);
printf("%d\n",a1.num);
return 0;
}


//附上一段新的代码  包括不同类型的成员变量的初始化及显示方式

// struct_test1.cpp : 定义控制台应用程序的入口点。
//
//结构体数据类型的赋值及显示方式
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//先结构体类型,再定义结构体类型变量,定义常见的数据类型
struct stru     //定义stru类型的结构体
{
	int a;    
	int *c;
	int num[4];
	char str1;
	char *str2;
	char str3[4];	
}*st1,st2;     //定义结构体变量,这种方式等效于stru *st1;stru st2;


int _tmain(int argc, _TCHAR* argv[])
{
	int i=11;
	int test[4]={1,2,3};
	char *str5="abc";
	char str6[4]="def";
	//结构体指针不同成员的赋值方式
	st1=(stru *)malloc(sizeof(stru));//结构体指针使用要初始化
	st1->c=(int *)malloc(sizeof(int));//结构体成员中的指针变量也要初始化
	st1->a=1;          //整型赋值                                 
	st1->c=&i;         //整型指针的赋值    
	for(int k=0;k<4;k++)//整型数组赋值方式
	{
	  st1->num[k]=test[k];
	}
	st1->str1='a';//字符型赋值,只能定义一个字符,多个字符如'abc'的话发生截断
	st1->str2=str5;//字符指针的初始化 st1->str2=str6;也是可以的
    for(int k=0;k<4;k++)//字符串数组赋值方式,或者用strcopy
	 {
	   st1->str3[k]=str6[k];
	 }
	//各个类型的输出方式:
	printf("结构成员的输出结果:\n");
	printf("st1->a=%d,\nst1->c=%d,\nst1->str1=%c,\nst1->str2=%s\n",st1->a,*(st1->c),st1->str1,st1->str2);
	//对于字符串数组及整型数组,可采用循环的方式输出
	 for(int k=0;k<4;k++)//字符串数组的输出方式一
	 {
	   printf("%c",st1->str3[k]);
	 }
	 //strcpy(st1->str3,"Los");
	 //printf("%s",st1->str3);  //字符串数组及字符串指针的输出方式
	 printf("\n");
	 for(int k=0;k<4;k++)//整型数组的输出方式
	 {
	   printf("%d",st1->num[k]);
	 }
	 printf("\n");
	//结构体变量成员赋值方式
	st2.c=(int *)malloc(sizeof(int));//结构体成员中的指针变量也是需要初始化的
	int j=10;
	st2.a=0;
	st2.c=&j;//指针变量的赋值方式
	for(int k=0;k<4;k++)//数值的赋值方式
	{
		st2.num[k]=k;
	}
	st2.str1='v';
	st2.str2=str5;
	strcpy(st2.str3,"hel");
	//输出成员变量
	printf("st2.a=%d,\n*(st2.c)=%d,\nst2.str1=%c,\nst2.str2=%s,\nst2.str3=%s\n",st2.a,*(st2.c),st2.str1,st2.str2,st2.str3);
	 for(int k=0;k<4;k++)//整型数组的输出方式
	 {
		 printf("%d",st2.num[k]);
	 }

	return 0;
}






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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值