结构体与数组

数组

1.0  数组定义

       1.1   无初始值:int arr[10];   //局部变量如果没有赋值则随机。全局或静态变量则系统初始化为0.

       1.2   有初始值:int arr[10]={10,20,30};    //没有赋值的补0

                                 char arr[20] = ''hello world";  //没有赋值的补0    0的ascll为'\0'

                                 char arr[10] = {'10' , '20'};

2.0  数组引用

       int arr[10]={10 , 20 };

       int a = arr[0];    // a=10

 考虑:  int   (*p)[4]  ;    int arr[5][5];

                   p = arr;

 结构体:

struct std
{
    char[10]   name;
    int        age  ;
    char       sex ;
}

1.0  初始化赋值  
     方法一
     struct std   aa = {"xiao ming" , 10 , 1};
     方法二
      struct std  aa;
      strcpy(aa.name,"xiao ming");
      aa.age = 10 ;
      aa.sex = 1;
 

          

对比

     对比着上面的定义来看C语言数组,数组作为一个函数的参数传递时,退化成一个指针; 同时,数组无法作为函数的返回值; 也许让数组更不服气的是,数组之间不能直接赋值操作

  1.   数组作为一个函数的参数传递时,退化为一个指针。
  2.   数组无法作为函数的返回值
  3.   数组之间不能直接赋值操作
  •      1  结构体可以作为函数参数
  •       2  结构体可以作为返回值  
  •       3  结构体可以赋值

    但是如果数组包装在结构体中,那么就能进行赋值了 

#include<stdio.h>
struct student
{
	char name[10];
	int age;
	char sex;
	
};
typedef struct 
{
	char name[10];
}char_t;

//利用结构体封装数组,实现数组的输入
char_t out_put_arr(char_t arr)  //结构体内部有数组
{
	char_t new_arr;
	
	new_arr = arr ;    //结构体赋值
	
	return  new_arr;   //结构体返回
}


void main()
{
	struct student da ,xin={"xin ming" , 10 , 1};
	
	da = xin;

	printf("xin_name = %s\n" , xin.name);
	
	printf("da_name = %s\n" , da.name);
	
	char_t   new , old={"I am old"};
	
	new = out_put_arr(old);
	
	printf("new = %s\n" , new.name);
	
}
//输出
/*
xin_name = xin ming
da_name = xin ming
new = I am old
*/

 

 

                                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值