c語言結(jié)構(gòu)體指針初始化 C語言結(jié)構(gòu)體指針中的const成員怎么初始化?
C語言結(jié)構(gòu)體指針中的const成員怎么初始化?有一些方法,但我不同意這種方法。但是,如果它僅用作初始化,則可以先定義初始化函數(shù),并確保不會(huì)在其他位置調(diào)用它。代碼如下:#include#includet
C語言結(jié)構(gòu)體指針中的const成員怎么初始化?
有一些方法,但我不同意這種方法。但是,如果它僅用作初始化,則可以先定義初始化函數(shù),并確保不會(huì)在其他位置調(diào)用它。代碼如下:
#include
#include
typedef struct
{
int*const P
}C
int main()
{
int i=0
C*C=(C*)malloc(sizeof(C))
printf(“old:0x xn”,C->P)
(int*)(C->P)=&i//最關(guān)鍵的一步。
Printf(“new:0x xn”,C->P)
free(C)
return 0
}
構(gòu)造對(duì)象時(shí)初始化對(duì)象是一種誤解。唯一的方法是編寫一個(gè)特殊函數(shù)來初始化結(jié)構(gòu)的內(nèi)存。您甚至可以使用memset()函數(shù)。因此,您的需求已經(jīng)退化為如何初始化結(jié)構(gòu)。這是很多C程序員回去寫C程序時(shí),會(huì)反復(fù)思考問題。
結(jié)構(gòu)體指針如何初始化?
例如,結(jié)構(gòu)如下:typedef struct{void*-tinput void*-outputvolatile void*-tdmabaseaddrvolatile unsigned int*-itu656regvoltile unsigned int*-ituretreg}itumanager代碼如下:struct itumanager{void*inputvoid*outputvolatile void*dmabaseaddrvolatile unsigned int*itu656regvoltileunsigned int*ituresetreg}*ITU=null
結(jié)構(gòu)體中的指針數(shù)組怎么初始化為NULL?
如果它是全局的(函數(shù)外部),則它已初始化為null。如果它不是全局的,那么寫一個(gè)for循環(huán)并將每個(gè)元素賦值為null