C/C++ basic
2813 ワード
字面値:uはunsignedlとしてlong例として定義される:-12 u 12 l-12 ul科学カウント:ExFまたはExLF xは10の次数3.14 E 5 F//314000転義を表す:um numは8進数062、16進数xddd文字列:Lはワイド文字L'a'L"a"マルチライン字面値を表す
定義参照:aの参照をbint a=10にする.int &b=a;b++;//a,bはいずれも11と以下の等価int*b=&aである.(*b)++;
反復器:vectorv;for(vector::iterator itr=v.begin();itr!=v.end();itr++) *irt=0;読み取り専用反復器forvector::const_iterator itr=v.begin();itr!=v.end();itr++) cout<<*irt;
配列:初期化:const unsigned array_size = 3; int ia[array_size] = {0, 1, 2}; int ia[] = {0, 1, 2}; 関数体外で定義された配列はデフォルトで初期化され、関数体内で定義された配列は初期化されません(intの場合、初期化は1で、そうでないと不確定な数になります)C++ではvectorを使用することをお勧めします.配列初期化vectorメソッドは、ヘッダアドレスと末尾アドレスの後のvectorvi(ia,ia+3)を提供することです.
ビット操作:
マシン関連データ型:
ptrdiff_t 2つのポインタ差signed、同じ配列、異なる配列がsize_をオーバーフローする可能性がありますt usignedタイプ
文字列:strncpyの標準的な使い方:(手書きで0)
なるべくstrncat_を使うsバンドセキュリティモニタリング、オーバーフローは異常を報告します.例えばstrncat(largeStr,cp 2,19)を使用すると直接エラーが報告されます.
定義参照:aの参照をbint a=10にする.int &b=a;b++;//a,bはいずれも11と以下の等価int*b=&aである.(*b)++;
反復器:vector
配列:初期化:const unsigned array_size = 3; int ia[array_size] = {0, 1, 2}; int ia[] = {0, 1, 2}; 関数体外で定義された配列はデフォルトで初期化され、関数体内で定義された配列は初期化されません(intの場合、初期化は1で、そうでないと不確定な数になります)C++ではvectorを使用することをお勧めします.配列初期化vectorメソッドは、ヘッダアドレスと末尾アドレスの後のvector
ビット操作:
unsigned int int_quiz1 = 0;
int_quiz1 |=1UL<<10; // 10 1
if(int_quiz1&(1UL<<10)) // 10 1
cout<<"10 true"<<endl;
int_quiz1 &=~(1UL<<10); // 10 0
//C++ bitset
bitset<13> b(int_quiz1);
b.set(10);
b.reset(10);
cout<<b.to_string()<<endl;
マシン関連データ型:
ptrdiff_t 2つのポインタ差signed、同じ配列、異なる配列がsize_をオーバーフローする可能性がありますt usignedタイプ
文字列:strncpyの標準的な使い方:(手書きで0)
const char* cp1="1111111111111111111111"; // const char*, ,
const char* cp2="2222222222222222222222";
char largeStr[16 + 18 + 2]={0}; // , strncat \0 ,
strncpy(largeStr, cp1, 16);
strncat(largeStr, " ", 2);
strncat(largeStr, cp2,17); // , \0
largeStr[16 + 18+1]='\0';//
cout<<largeStr;
なるべくstrncat_を使うsバンドセキュリティモニタリング、オーバーフローは異常を報告します.例えばstrncat(largeStr,cp 2,19)を使用すると直接エラーが報告されます.