為什么不能num用結構體的number欄位值來初始化整型變數Strct?
#include <iostream>
struct Strct
{
float number = 16.0f;
};
int main()
{
Strct* strct;
int num = strct->number;
return 0;
}
錯誤串列:使用了 C4700 未初始化的區域變數“strct”
uj5u.com熱心網友回復:
為什么不能用Strct結構的number欄位的值來初始化整型變數num?
因為指標未初始化,因此它不指向任何物件。間接通過指標,甚至讀取指標的值都會導致未定義的行為。
我以為我的strct指向的是Strct結構,也就是它的型別
不。指標不指向型別。物件指標指向物件。型別不是 C 中的物件。
16.0f 不是 的值number。16.0f 是該成員的默認成員初始值設定項。如果您創建型別為 的物件Strct,并且您沒有為該成員提供初始化程式,則默認成員初始化程式將用于初始化相關物件的成員。
那么我可以定義一個回傳這個結構地址的成員函式嗎?
結構是一種型別。型別不存盤在地址中。沒有“型別地址”這樣的東西。
以下是如何創建命名類實體的變數的示例Strct:
Strct strct;
您可以使用成員訪問運算子訪問此變數的成員:
int num = strct.number;
以下是如何創建不使用默認成員初始值設定項的實體的示例:
Strct strct = {
.number = 4.2f,
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/384365.html
上一篇:C中這些數字分析(哈希)演算法中的記憶體使用率非常高
下一篇:C獲取指標的型別
