A. c語言結構體嵌套
定義一個學期結構體,學期結構體中的4個元素類型為成績結構體,再將這個學期結構體放到student中
B. C語言結構體的問題,一個嵌套,可是我寫的好像有問題,初學求幫助解答,謝謝
你要用結構的要先定義一個結構的變數。
book結構裡面的 struct author author; 這個結構變數定義變數名不要和結構類型名字一樣。
struct book a; //book是類型名字。後面的a才是變數名。
scanf的輸入格式控制符。%c是一個字元。如果是字元串的話是%s。
還有printf後面的參數表不要加地址符&;
還有那個循環是無意義的。。。輸入兩次。第二次覆蓋第一次。
#include <stdio.h>
struct author
{
char FirstName[20];
char LastName[20];
char sex[10];
};
struct book
{
char title[20];
float value;
struct author bk;
};
int main()
{
int i;
struct book p;
printf("輸入這本書的標題:\n");
scanf("%s",&p.title);
printf("輸入這本書的價錢:\n");
scanf("%f",&p.value);
printf("輸入這本書的作者姓和名:\n");
scanf("%s%s",&p.bk.FirstName,&p.bk.LastName);
printf("輸入作者的性別:\n");
scanf("%s",&p.bk.sex);
printf("標題:%s\n",p.title);
printf("價格:%f\n",p.value);
printf("作者的姓和名:%s%s\n",p.bk.FirstName,p.bk.LastName);
printf("作者的性別:%s\n",p.bk.sex);
return 0;
}
C. C語言結構體嵌套問題
更正如下:注意語法
#include<stdio.h>
struct
Date
{
int
month;
int
day;
int
year;
};
struct
Person
{
char
name[20];
char
sex;
struct
Date
birthday;
unsigned
num;
};
int
main(void)
{
struct
Person
p1={"WangLi",'M',12,15,1974,111000222};
struct
Person
p2;
p2=p1;
printf("zhang:%s,%c,%d-%d-%d,%lu\n",p1.name,p1.sex,p1.birthday.month,p1.birthday.day,p1.birthday.year,p1.num);
return
0;
}
D. C語言 如何在結構體中給嵌套的結構體賦值
結構體嵌套,賦初值,大括弧嵌套就可以了。
問題是你代碼寫錯了。
你定義的old1不是結構類型,而是結構變數。
在shuju中成員要寫struct old 變數名;
不能寫struct old1。
下面是演示代碼:(補充:如果想定義一個結構類型別名,要用typedef)
#include <stdio.h>
struct old
{
int year;
int month;
int day;
}old1={1972, 8, 3};
struct shuju
{
char name[10];
char gender[6];
int height;
struct old old1;
char access[9];
}shuju1={"moumouren","male",175,{2019,6,29},"well"};
int main()
{
printf("結構變數old1的初值: %d %d %d ",old1.year,old1.month,old1.day);
printf("結構變數shuju1中成員old1的初值:%d %d %d ",shuju1.old1.year,shuju1.old1.month,shuju1.old1.day);
printf("我特意起一樣的名字,就是告訴你這兩個變數是不一樣的。 ");
return 0;
}
/*(補充:如果想定義一個結構類型別名,要用
typedef struct old
{
int year;
int month;
int day;
}old1;//這樣old1才表示是一個類型,然後再定義該類型變數時,才可以寫 old1 變數名;
)*/
E. 【c語言共用體】裡面嵌套有結構體,求詳解。高分懸賞。謝謝
共用體就是享用同一塊內存
在此例中
e的大小為最長元素的大小,也就是結構體out的大小,共兩個int,假設此處int為4位元組
e.c和e.d和e.out.a佔用同一塊內存,即低4位元組的內存,a.out.b佔用高4位元組內存
然後e.c=1;e.d=2;
e.c和e.d和e.out.a都為2
e.out.a=e.c*e.d = 2*2 = 4;
那麼e.c和e.d和e.out.a都變成了4
e.out.b=e.c+e.d = 4+4 = 8
F. 如何在C語言中嵌套定義結構體並VC6.0編譯通過
struct structA;
struct structB;
typedef struct structA{
int a;
structB *pb;
}structA;
typedef struct structB{
int b;
structA *pa;
}structB;
先聲明再定義,其實這個和函數聲明和定義是一樣的,咱們可以再main函數前面聲明,但是定義可以放在main函數後面,是同一個道理。樓主學過編譯原理嗎?只要聲明了,就有分配空間,雖然具體空間大小在定義處才知道,但是聲明了,就會知道有這么個東西,會預留空間。所以只要聲明就可以了
G. 關於c語言結構體嵌套的問題
早期純C編譯器要求結構體類型必須寫上struct關鍵字,不能只寫個結構體名。後來C++兼容的編譯器則允許寫結構體名就可以了。所以你在嵌套時結構體成員名前寫上struct(struct Order order;)就在什麼編譯器下都能通過了……
H. c語言嵌套結構體代碼求解
0開頭的,說明是八進制數,八進制數里沒有9,直接寫成9就好了,不要寫09,要不然就寫成0x09
I. c語言中如何用子函數調用結構體中的變數實現數據的輸入與輸出。
用子函數實現結構體數據的輸入與輸出:對於多數子函數的輸入與輸出,有一定規律性可言。
方法1:void型不傳值傳址調用與聲明。main中聲明void date_in(),void date_pout()。函數定義前一定在main()前先定義結構體變數(全局變數),然後定義輸入或輸出程序段。此時再main()調用即可。
如下:
struct student
{
char name[20];
int old;
char sex;
}stu;
void date_in();
void main()
{ date_in();
}
void date_in()
{ scanf("%s%d/c,"stu.name,stu.old,stu.sex);
}時間問題程序有點簡潔,有問題請追問,很樂意與你分享。