1樓:匿名使用者
1、結構體指標其實是乙個指標,它儲存的是指向某個結構體的「位址」,所以結構體指標陣列儲存的其實是指向一組結構體的「位址」陣列,它本身並不包含結構體的具體內容(沒有被分配記憶體)
2、所以當用到他們時,要麼重定向,比如:
d=&b; //讓d指向b,d儲存的是b的位址,這樣就能通過d來呼叫b了
要麼用malloc為他們分配記憶體:
d=(struct h *)malloc(sizeof(struct h));
這樣d就指向系統為其分配的一塊記憶體,其內容就是struct h中的東西
2樓:匿名使用者
下面的程式是我以前寫的,你稍微改改就能符合你的要求了#include
#include
typedef struct st
student;
void swap(student *a, student *b)void sort(student *array, int n)}if (flag)
break;}}
void print(student *array, int n)}int main()
print(stu, number);
sort(stu, number);
print(stu, number);
free(stu);
return 0;}
c語言指向結構體的指標 5
3樓:a葰汰
c語言中的結構體
在c語言中,結構體(struct)指的是一種資料結構,是c語言中聚合資料型別(aggregate data type)的一類。結構體可以被宣告為變數、指標或陣列等,用以實現較複雜的資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的型別,成員一般用名字訪問。
定義與宣告
結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體宣告的變數。
結構體成員的引用
有兩種方式,英文的句點 . ,乙個減號加乙個大於號 ->。
當結構體是乙個指標時要引用結構體的成員就用-> 而如果不是指標就用.。
如:struct msg_st ;
struct msg_st msg;
struct msg_st *ms;
msg.a = 10;
ms->a = 20;
4樓:匿名使用者
如果你按%d輸出,那麼是把結構體開始的四個位元組當作乙個整數來解釋如果結構體定義第乙個成員恰好就是乙個整數,例如struct s
那它就是i的值,如果不是這樣,而是其他型別的成員,比如struct t
那麼會出現一些你不能理解的數字,但它仍然是個數字,任何一段4位元組記憶體,你都可以當作乙個整數來解釋,他就是乙個數,只不過當他原本並不是整數時,你錯解了它的含義,而且你不知道它是個啥。
C語言題目,用結構體寫,C語言結構體程式設計題,求大神!
include struct date struct car int main void printf 車牌號 t載客量 t顏色 t出廠日期 n printf d t d t s t d d d vehicle.license,vehicle.busload,vehicle.color,vehicl...
c語言結構體成員指標初始化問題,C語言結構體成員指標初始化問題
一中只是將name指向 jim 所在的空間,jim 已經存在了,直接將指標指向他即可,而二中是複製乙個 jim 到name所指向的空間,沒有初始化當然不行 第乙個 jim 返回的是乙個位址,是正確的。第二個記憶體分配小了。問題 一 中的student.name並未初始化,為什麼能賦值成功?stu.n...
c語言陣列越界,C語言陣列(指標)越界訪問
第乙個和第二個陣列a 2 按指標說就是指向a 1 也就是30的記憶體下乙個位置,兩種程式排列不一樣,第二個下乙個應該是i的位置,第乙個不一定,可能是堆裡面的隨機數。恩。打個比方說有一天你去賓館訂了個房間。然後再牆壁上鑿了個洞看隔壁住著誰。後來又有一天你又去訂了乙個房間,然後又在牆壁上鑿了個洞看隔壁住...