最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言結(jié)構(gòu)體數(shù)組常用的三種賦值方法(包含字符串)

 更新時(shí)間:2022年06月14日 15:10:07   作者:編程圖一樂(lè)  
C語(yǔ)言只有在定義字符數(shù)組的時(shí)候才能用“=”來(lái)初始化變量,其它情況下是不能直接用“=”來(lái)為字符數(shù)組賦值的,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言結(jié)構(gòu)體數(shù)組常用的三種賦值方法,需要的朋友可以參考下

一、按照成員變量進(jìn)行賦值(麻煩,好理解,字符串賦值需要strcpy)

這里使用了一個(gè)Init函數(shù),為了在進(jìn)一步說(shuō)明傳參的使用。實(shí)際上賦值按照需要放在主函數(shù)就行。

(使用strcpy函數(shù)需要添加頭文件string.h)

	#include <stdio.h>
	#include <string.h>
	
	typedef struct date  //定義了一個(gè)日期結(jié)構(gòu)體,包含年月日三個(gè)成員 
	{
		int year;
		int mouth;
		int day;
	}datea;
	
	typedef struct  schedule//定義了一個(gè)日程結(jié)構(gòu)體,包含日期,和活動(dòng)兩個(gè)成員變量 
	{
		char name[10];
		datea date;
		char activity[200];
	}sch;
	
	int Init(sch *name)  //初始化函數(shù) 數(shù)組用指針接收 
	{
		strcpy(name[0].name,"jack");
		name[0].date.year = 2021; //使用級(jí)聯(lián)運(yùn)算 
		name[0].date.mouth = 11;
		name[0].date.day = 11;
		strcpy(name[0].activity,"Taobao shooping");
		
		strcpy(name[1].name,"Amy");
		name[1].date.year=2021;
		name[1].date.mouth = 11;
		name[1].date.day = 12;
		strcpy(name[1].activity,"play piano");
	 } 
	
	
	int main()
	{
		sch name[2] ;
		Init(name);		
		for(int i=0;i<2;i++)
		{
		
		
			printf("%s %d %d %d \n%s \n",name[i].name,name[i].date.year,name[i].date.mouth,name[i].date.day,name[i].activity);		
		}
		
	}

二、對(duì)數(shù)組整體進(jìn)行賦值。(一次性需要把所有的都添加進(jìn)去,不需要strcpy)        

(1) 在聲明數(shù)組的時(shí)候,進(jìn)行賦值

可以換行,中間的結(jié)構(gòu)體嵌套需要再次使用花括號(hào)括起來(lái)(這里沒(méi)有傳參,放在被調(diào)函數(shù)不能這么賦值)。

sch name[2] = {{"jack",{2021,11,11},"Taobao Shopping"},
						{"jack",{2021,11,11},"Taobao Shopping"}};

也可以直接寫下去:

typedef struct student {
    int sno;
    char name[20];	
} stu;
 
int main() {
    stu stua[5] = {1001,"jack",1002,"Amy"};

輸出結(jié)果:

這里舉了個(gè)例子,定義了一維數(shù)組name,將name傳到被調(diào)函數(shù)的時(shí)候,只剩下了首地址,對(duì)其進(jìn)行賦值是[Error] declaration of 'sch name' shadows a parameter  ,就是說(shuō)缺少參數(shù),因?yàn)橹挥惺椎刂?,并不是完整的?shù)組,所以不能這么賦值。

(2)對(duì)有規(guī)律的數(shù)據(jù)賦值,比如學(xué)生結(jié)構(gòu)體的學(xué)號(hào)是有規(guī)律的。

#include <stdio.h>
 
typedef struct student  //定義了學(xué)生結(jié)構(gòu)體 
{
	int sno;
	char name ;
}stu;
 
stu stua[5];  //5名學(xué)生的結(jié)構(gòu)體數(shù)組 
 
int main()
{
	for(int i=1;i<5;i++)
	{
		stua[i].sno=i;  //循環(huán)賦值,5名學(xué)生的學(xué)號(hào)依次為1-5 
	}
	
	return 0;
}

 三、使用輸入進(jìn)行賦值

 依然用學(xué)生為例子。

(1)直接使用for,配合動(dòng)態(tài)分配內(nèi)存,這里按照數(shù)據(jù)庫(kù)的數(shù)據(jù)類型,我將學(xué)號(hào)定義為char型,實(shí)際上定義為int 即可。

#include <stdio.h>
#include <stdlib.h>
 
typedef struct student {
    char sno[6];
    char name[20];	
} stu;
 
int main() 
{
	int N;
	scanf("%d",&N);//獲得學(xué)生個(gè)數(shù) 
    stu * stua = (stu *)malloc(N * sizeof(stua));  //動(dòng)態(tài)分配了結(jié)構(gòu)體變量stua的長(zhǎng)度 
    
    //方法一:用for給結(jié)構(gòu)體賦值
	for(int i=0;i<N;i++)
	{
		scanf("%s %s",stua[i].sno,stua[i].name); 	
	 } 
	for(int i=0;i<N;i++)
	{
		printf("%s %s\n",stua[i].sno,stua[i].name);
	 } 
}

輸出結(jié)果:

(2)調(diào)用函數(shù)賦值,我們知道,結(jié)構(gòu)體數(shù)組中,數(shù)組有多個(gè)元素,每個(gè)數(shù)組元素又有多個(gè)結(jié)構(gòu)體成員變量,所以將每個(gè)數(shù)組元素用函數(shù)分別去賦值。

#include <stdio.h>
#include <stdlib.h>
 
typedef struct student {  //定義結(jié)構(gòu)體 
    char sno[6];         //注意學(xué)號(hào)為char 
    char name[20];	
} stu;
 
 
stu getstu(void)         //結(jié)構(gòu)體函數(shù) 
{
    stu tem;
 
    scanf("%s",tem.sno);//因?yàn)槭亲址挥眉尤≈贩?amp;,否則此處為&p.x
    scanf("%s",tem.name);
    return tem;
}
 
int main() 
{
	int N;
	scanf("%d",&N);//獲得學(xué)生個(gè)數(shù) 
    stu * stua = (stu *)malloc(N * sizeof(stua));  //動(dòng)態(tài)分配了結(jié)構(gòu)體變量stua的長(zhǎng)度 
    
    //方法二:調(diào)用函數(shù) 
	for(int i=0;i<N;i++)
	{
		stua[i] = getstu();	
	 } 
	 
	for(int i=0;i<N;i++)
	{
		printf("%s %s\n",stua[i].sno,stua[i].name);
	 } 
}

 輸出結(jié)果:

(3)通過(guò)指針給到其他函數(shù)去賦值(如果你看到這,才到了精髓,傳參賦值)

#include <stdio.h>
#include <stdlib.h>
 
typedef struct student {  //定義結(jié)構(gòu)體 
    char sno[6];         //注意學(xué)號(hào)為char 
    char name[20];	
} stu;
 
 
void getstu(stu *stua)         //返回值為空即可 
{
    
    scanf("%s",stua -> sno);//因?yàn)槭亲址?,不用加取址?amp;,否則此處為&stua.x
    scanf("%s",stua -> name);
}
 
int main() 
{
	int N;
	scanf("%d",&N);//獲得學(xué)生個(gè)數(shù) 
    stu * stua = (stu *)malloc(N * sizeof(stua));  //動(dòng)態(tài)分配了結(jié)構(gòu)體變量stua的長(zhǎng)度 
    
    //方法二:函數(shù)傳參賦值 
	for(int i=0;i<N;i++)
	{
		getstu(&stua[i]);
	}
	 
	for(int i=0;i<N;i++)
	{
		printf("%s %s\n",stua[i].sno,stua[i].name);
	 } 
}

執(zhí)行結(jié)果:

總結(jié)

到此這篇關(guān)于C語(yǔ)言結(jié)構(gòu)體數(shù)組常用的三種賦值方法的文章就介紹到這了,更多相關(guān)C語(yǔ)言結(jié)構(gòu)體數(shù)組賦值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言不定長(zhǎng)數(shù)組及初始化方法

    C語(yǔ)言不定長(zhǎng)數(shù)組及初始化方法

    今天小編就為大家分享一篇C語(yǔ)言不定長(zhǎng)數(shù)組及初始化方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • DSP中浮點(diǎn)轉(zhuǎn)定點(diǎn)運(yùn)算--定點(diǎn)數(shù)模擬浮點(diǎn)數(shù)運(yùn)算及常見(jiàn)的策略

    DSP中浮點(diǎn)轉(zhuǎn)定點(diǎn)運(yùn)算--定點(diǎn)數(shù)模擬浮點(diǎn)數(shù)運(yùn)算及常見(jiàn)的策略

    本文主要講解DSP中定點(diǎn)數(shù)模擬浮點(diǎn)數(shù)運(yùn)算及常見(jiàn)的策略,具有參考價(jià)值,需要的朋友可以參考一下。
    2016-06-06
  • C語(yǔ)言例題講解指針與數(shù)組

    C語(yǔ)言例題講解指針與數(shù)組

    在C語(yǔ)言和C++等語(yǔ)言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來(lái)指向若干個(gè)字符串,使字符串處理更加方便、靈活
    2022-07-07
  • C語(yǔ)言形參和實(shí)參傳值和傳址詳解刨析

    C語(yǔ)言形參和實(shí)參傳值和傳址詳解刨析

    形參出現(xiàn)在函數(shù)定義中,在整個(gè)函數(shù)體內(nèi)都可以使用, 離開(kāi)該函數(shù)則不能使用。實(shí)參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能使用,形參和實(shí)參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時(shí), 主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送
    2021-11-11
  • Visual Studio 2022 Preview 使用 C++20 Module的詳細(xì)過(guò)程

    Visual Studio 2022 Preview 使用 C++20 Module的詳細(xì)過(guò)程

    這篇文章主要介紹了Visual Studio 2022 Preview 使用 C++20 Module的過(guò)程,本文通過(guò)項(xiàng)目分析實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • 深入解析C++編程中的運(yùn)算符重載

    深入解析C++編程中的運(yùn)算符重載

    這篇文章主要介紹了C++編程中的運(yùn)算符重載,運(yùn)算符重載是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-04-04
  • 從匯編看c++中extern關(guān)鍵字的使用

    從匯編看c++中extern關(guān)鍵字的使用

    本篇文章介紹了,在c++中extern關(guān)鍵字的使用概述,需要的朋友參考下
    2013-05-05
  • VC++ 自定義控件的建立及使用方法

    VC++ 自定義控件的建立及使用方法

    這篇文章主要介紹了VC++ 自定義控件的建立及使用方法的相關(guān)資料,十分的詳細(xì),需要的朋友可以參考下
    2015-06-06
  • C++ min/max_element 函數(shù)用法詳解

    C++ min/max_element 函數(shù)用法詳解

    這篇文章主要介紹了C++ min/max_element 函數(shù)用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • VS2022 Git提交代碼的實(shí)現(xiàn)

    VS2022 Git提交代碼的實(shí)現(xiàn)

    本文主要介紹了VS2022 Git提交代碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論

临海市| 商水县| 密云县| 镇康县| 环江| 濮阳市| 祥云县| 江津市| 防城港市| 涞源县| 屏边| 灵石县| 吉木萨尔县| 安阳市| 满城县| 大荔县| 石台县| 乐亭县| 凤山县| 全南县| 河北区| 鹰潭市| 靖州| 平阴县| 平山县| 海盐县| 久治县| 建瓯市| 马龙县| 石泉县| 离岛区| 阿拉善左旗| 竹山县| 南充市| 康定县| 北海市| 夏邑县| 大埔县| 玉林市| 福安市| 五原县|