struct的申明,宣告為指標與變數的區別

2021-08-08 02:44:52 字數 685 閱讀 5182

#include "stdio.h"

#include "stdlib.h"

struct ssd_ch_lun_alloc;

int main(void)

{struct ssd_ch_lun_alloc alloc[12];

//陣列變數,已經賦值的情況下, 在棧中

struct ssd_ch_lun_alloc *test_alloc;

//指標在並賦值的情況下使用了

test_alloc = (struct ssd_ch_lun_alloc *)malloc(sizeof(struct ssd_ch_lun_alloc));

//指標賦值, 在堆中

alloc[0].start_lun = 0;

alloc[0].end_lun = 1;

test_alloc->start_lun = 2;

test_alloc->end_lun = 4;

printf("the number is %d, %d\n", alloc[0].start_lun, alloc[0].end_lun);

return 1;

宣告為變數時,並分配記憶體空間,在進行struct中的變數賦值時,可直接使用。

宣告為指標時,並未進行賦值,也沒有分配記憶體空間。需要用malloc進行記憶體空間的分配,並將記憶體起始位址返回給指標變數

定義為指標,宣告為陣列

檔案1中 定義指標 檔案2 宣告為陣列 char str abcd 在檔案1中 extern char str 在檔案2中 在檔案1中str這個變數裡面儲存了乙個字串的首位址假設是0x12345678 這個位址裡面存了a 後面的位址存放了b 依次類推 在檔案2中使用的時候會出現的問題 char c ...

定義為陣列,宣告為指標

檔案1中 定義陣列 檔案2 宣告為指標 char str abcd 在檔案1中 extern char str 在檔案2中 檔案1中定義乙個陣列str,裡面存了abcd 假設陣列首元素的首位址為0x00000001 那麼 0x00000001裡面存了a,0x00000002裡面存了b 檔案2中宣告成...

struct型別宣告的疑問

如果struct型別的宣告放在函式體內,比如下面這個程式 include define n 5 int main struct student stu n s stu s input stu return 0 struct student input struct student p 編譯時在引用i...