c++primerレコード1
2967 ワード
目次 C++レコード 符号付きタイプと符号なしタイプを混用しないでください.主に比較加減である. 右値参照.TODO 配列ポインタとポインタ配列 const typedef auto decltype TODO
C++レコード
符号付きタイプと符号なしタイプを混用しないでください.主に比較加減である.
右参照TODO
配列ポインタとポインタ配列
a.配列ポインタ:ポインタであり、配列を指す.次のようになります.
b.ポインタ配列:配列で、中に保存されているポインタです.次のようになります.
const
参照はオブジェクトではありません.したがって、参照を指すポインタはない.最上位constと最下位constをどのように区別しますか?ポインタconst修飾子を追加する場合は、次の2つのケースがあります.
状況1を定数ポインタと呼ぶ.指向されるのは定数であり、constは指向されるオブジェクトを修飾する.しかし、ポインタ自体(a)は定数ではない.他の変数を指すことができる.すなわち
ケース2をポインタ定数と呼ぶ.ポインタは定数です.constはポインタ自体を修飾する.したがって、ポインタ自体は変えることはできないが、指し示すオブジェクトは変えることができる.
最上位const:ポインタにとって、修飾ポインタ自体のconstは最上位constであり、修飾が指すオブジェクトは最上位constである.次のようになります.
より一般的に、最上位constは、算術タイプ、クラス、ポインタなど、任意のオブジェクトが定数であることを表すことができる.下位constはポインタや参照などの複合タイプの基本タイプ部分に関係する.特に、ポインタタイプは、最上位のconstであってもよいし、最下位のconstであってもよい点が他のタイプと比較する明らかに異なる.参照を宣言するためのconstはいずれも最下位のconstである.
typedef
複雑な声明の理解規則:右左の法則は変数名から見て、まず右に行って、それから左に行って、括弧にぶつかって読む方向を変えます;括弧内の分析が完了すると括弧から飛び出すか、右から左の順序で分析が完了するまでループします.
次のようになります.
funcは5つの要素を含む配列であり、配列要素はintを返す値、パラメータはintポインタの関数である.
auto
a.autoは最上位constを無視し、最下位constを保持する.次のようになります.
b.推定されるautoタイプが最上位constである場合、明確に指摘する必要があります.
c. auto &
decltype TODO
decltype((var)); 二重カッコの結果は常に参照されます.
転載先:https://www.cnblogs.com/daihanlong/p/10242053.html
C++レコード
符号付きタイプと符号なしタイプを混用しないでください.主に比較加減である.
右参照TODO
配列ポインタとポインタ配列
a.配列ポインタ:ポインタであり、配列を指す.次のようになります.
// . "[]" "*" , "()"
int (*parr)[5];
//
int a[] = {1,2,3,4,5};
parr = &a;
//
auto len = sizeof(a)/sizeof(a[0]);
for(int i = 0;i < len; ++i){
cout << (*parr)[i] << endl;
}
b.ポインタ配列:配列で、中に保存されているポインタです.次のようになります.
// a 10 , int .
int* a[10];
const
参照はオブジェクトではありません.したがって、参照を指すポインタはない.最上位constと最下位constをどのように区別しますか?ポインタconst修飾子を追加する場合は、次の2つのケースがあります.
// 1. int
const int *a;
// 2. int
int *const b;
状況1を定数ポインタと呼ぶ.指向されるのは定数であり、constは指向されるオブジェクトを修飾する.しかし、ポインタ自体(a)は定数ではない.他の変数を指すことができる.すなわち
int num = 10;
int val = 20;
const int *a = #
// *a = 20; // . *a num
num = 11; //
a = &val; //
ケース2をポインタ定数と呼ぶ.ポインタは定数です.constはポインタ自体を修飾する.したがって、ポインタ自体は変えることはできないが、指し示すオブジェクトは変えることができる.
int num = 10;
int val = 20;
int *const a = #
a* = 11; //
// a = &val; //
最上位const:ポインタにとって、修飾ポインタ自体のconstは最上位constであり、修飾が指すオブジェクトは最上位constである.次のようになります.
int * const a; // const , const
const int *a; // const , const
より一般的に、最上位constは、算術タイプ、クラス、ポインタなど、任意のオブジェクトが定数であることを表すことができる.下位constはポインタや参照などの複合タイプの基本タイプ部分に関係する.特に、ポインタタイプは、最上位のconstであってもよいし、最下位のconstであってもよい点が他のタイプと比較する明らかに異なる.参照を宣言するためのconstはいずれも最下位のconstである.
int i = 0;
int *const pi = &i; // const
const int ci = 42; // const
const int *p2 = &i; // const
const int &r = ci; // const const
typedef
typedef char *pstring;
const pstring cstr; // const
const char *cstr;
複雑な声明の理解規則:右左の法則は変数名から見て、まず右に行って、それから左に行って、括弧にぶつかって読む方向を変えます;括弧内の分析が完了すると括弧から飛び出すか、右から左の順序で分析が完了するまでループします.
次のようになります.
int (*func[5])(int *);
funcは5つの要素を含む配列であり、配列要素はintを返す値、パラメータはintポインタの関数である.
auto
a.autoは最上位constを無視し、最下位constを保持する.次のようになります.
int num = 10;
const int *a = #
auto b = a;
// *b = 111; , b const int* b;
const int cnum = 11;
auto c = cnum; // const , int
c = 12; //
b.推定されるautoタイプが最上位constである場合、明確に指摘する必要があります.
int num = 10;
const auto p = #
int val = 11;
// p = &val; , p const const
c. auto &
const int ci = 10;
auto & b = ci;
// b = 11; , b ci , ci .
decltype TODO
decltype((var)); 二重カッコの結果は常に参照されます.
転載先:https://www.cnblogs.com/daihanlong/p/10242053.html