如何用函數初始化結構體


問題

這里主要討論函數的參數。應該是結構體呢。還是結構體的地址,還是二者都行。

實驗證明,僅僅能用結構體的地址。


代碼

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

typedef struct 
{
  int a;   //"int a=0;" is wrong
  int b[10];    
}STU;


void init_struct_point(STU *s){		//參數為數組指針
	s->a=100;
	s->b[0]=5;
	s->b[1]=7;

	printf("in f_point(), s->a  %d\n",s->a);
	printf("in f_point(), s->b[0]  %d\n\n",s->b[0]);
}


void init_struct(STU s){			//參數為數組
	s.a=1;
	s.b[0]=2;
	s.b[1]=3;

	printf("in f(), s.a  %d\n",s.a);
	printf("in f(), s.[0]  %d\n\n",s.b[0]);
}



int main(){
    STU s;

	printf("s=%d \t &s=%d\n\n",s,&s);


	init_struct_point(&s);	//"s1"會引發編譯錯誤

	printf("s=%d \t &s=%d\n\n",s,&s);


    printf("out f_point(), s.a  %d\n",s.a);
	printf("out f_point(), s.b[0]  %d\n",s.b[0]);
	printf("out f_point(), s.b[1]  %d\n\n",s.b[1]);



	init_struct(s);		//"&s1"會引發編譯錯誤

    printf("out f(), s.a  %d\n",s.a);
	printf("out f(), s.b[0]  %d\n",s.b[0]);
	printf("out f(), s.b[1]  %d\n\n",s.b[1]);


 
    system("pause");
	 return 0;   
}



執行結果


遺留問題

1.結構體變量名到底是什么。請看s以及&s?

2.結構體變量名 和 結構體數組變量名 有什么差別和聯系? http://blog.csdn.net/hiboy_111/article/details/44454149




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM