在網路編程中,我們定義結構體后,會通過memset或bzero來初始化它,如下
struct sockaddr_in server;
memset( &server, 0, sizeof( struct sockaddr_in ) );
能否直接寫成
struct sockaddr_in server{0};
uj5u.com熱心網友回復:
你試下不就知道了uj5u.com熱心網友回復:
給你個例子就知道了struct atest {
int a;
int b=1;
};
int main() {
struct atest a{0}; //這樣只是初始化結構體的第一個成員
struct atest b{0,0};
printf("%d,%d\n", a.a, a.b); //a.b沒被初始化
printf("%d,%d\n", b.a, b.b); //b.b也被初始化了,所以,一個個初始化來不如直接用memset來初始化快
}
uj5u.com熱心網友回復:
“變數賦值”和“變數初始化”不是一回事!“變數賦值”發生在運行期,其寫法遵循賦值語法規定。
“變數初始化”發生在編譯期或運行期,其寫法遵循初始化串列語法規定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/249135.html
標籤:C++ 語言
上一篇:指標陣列賦值值
下一篇:OpenMP只能呼叫32個核
