Ո՞րն է տարբերությունը int const * p- ի և const int * p- ի միջև:


պատասխանել 1:

Բարև

Հարցը պարունակում է երկու բան ՝ կայուն և ցուցիչ: Հիմա մենք բոլորս գիտենք, որ եթե փոփոխականը հայտարարվի հաստատուն, մենք չենք կարող փոխել դրա արժեքը: Սլաքը փոփոխական է, որը պահում է մեկ այլ փոփոխականի հասցեն:

Կան նաև երկու օպերատոր, որոնք մենք գտնում ենք ցուցիչներում և * մեջ: & օգտագործվում է փոփոխականի հասցեն ցուցիչին նշանակելու համար, և * օգտագործվում է այն դիրքի արժեքին, որին ցուցիչը ցույց է տալիս:

Հիմա մենք գալիս ենք հարցի

const int * p- ը կայուն փոփոխականի ցուցիչ է, և քանի որ մենք բոլորս գիտենք, որ մենք չենք կարող փոխել հաստատունի արժեքը, հետևյալ գործողությունը անվավեր է և սխալ է նետում:

* p = 3; // անվավեր այստեղ մենք փորձում ենք փոխել կայուն փոփոխական:

Բայց p = & i; //- ը Վավեր է, ես կարող եմ լինել ցանկացած փոփոխական

Սլաքը ցուցիչի վրա հաստատելու մեկ այլ եղանակ կա, այսինքն

int const * p1; // ցուցիչ դեպի կայուն ինտ

կա մեկ այլ ձև հայտարարություն, որը մենք տեսնում ենք, այսինքն int * const p Սա հայտնի է որպես կայուն ցուցիչ: Սա նշանակում է, որ հասցեն, որը մատնանշում է, որ չի կարող փոփոխվել, այնպես որ գործողությունները

* p = 3; // համարվում է վավեր, երբ փոփոխականի արժեքը փոխվում է:

ԲԱՅ p p = & i; // համարվում է անվավեր, քանի որ այն փորձում է փոխել հաստատունի արժեքը:

Կարելի է նաև հաստատուն ցուցիչով հաստատել: Այս դեպքում ոչ ցուցիչի արժեքը, ոչ էլ հիմնական տվյալների տարրը կարող են փոխվել: Շարահյուսությունն է

const int * const p;

Ահա սինթաքսը հիշելու մի միջոց ՝ Հ., ՈՐՊԵՍ ՆԱԽԱԳԻԾՈՒՄ «կոնստենտը» միշտ հետևում է *:

Այս այցի մասին ավելին իմանալու համար այցելեք geeksforgeeks- ը և փնտրեք Գ – ում կոնստրուկտորների որակավորումը: Կա մի ծրագիր, որն ավելին է բացատրում:

հուսով եմ, որ դա կվերացնի որոշ կասկածներ:


պատասխանել 2:

int const * p => p- ն ամբողջ ցուցիչն է ամբողջ թվային փոփոխականին, որում p- ով նշված հասցեն հաստատուն է (չի կարող փոփոխվել), և այս հասցեի արժեքը հնարավոր է փոխել

const int * p => p- ը ցուցիչ է դեպի ամբողջական ամբողջական փոփոխականի, որտեղ p- ով նշված հասցեում արժեքը կայուն է, իսկ p- ով նշված հասցեն կարող է փոխվել


պատասխանել 3:
Const և ցուցիչ. Անհրաժեշտ է տարբերակել ցուցիչից դեպի փոփոխականի կայուն և կայուն ցուցիչ: Ահա ցուցիչը դեպի հաստատուն. Const int * p; Հետևյալ հայտարարությունն անվավեր է, քանի որ փորձ է արվում փոխել հաստատության արժեքը. * P = 3; Բայց սա օրինական է, քանի որ ցուցիչն ինքնին հաստատուն չէ. P = & x; Մյուս կողմից, այս հռչակագիրը ցույց է տալիս փոփոխականության մշտական ​​ցուցիչը: int * const p; Այս դեպքում թույլատրվում է հետևյալ հայտարարությունը, քանի որ փոփոխականը կարող է փոփոխվել. * P = 3; Այնուամենայնիվ, սա այն դեպքը չէ, քանի որ փորձ է արվում փոխել հաստատության արժեքը: p =? Կարելի է հաստատուն ցուցիչ հաստատել: Այս դեպքում ոչ ցուցիչի արժեքը և ոչ էլ հիմնական տվյալների կետի արժեքը չեն կարող փոխվել. Const int * const p; Ահա շարադրությունը հիշելու մի եղանակ (Բյառն Ստրուստրուպի կողմից). Նշե'ք, որ const ցուցիչներում «կոնստ» -ը միշտ հետևում է «*» -ին: Օրինակ ՝ int * const p1 = q; // մշտական ​​ցուցիչ դեպի int փոփոխական int intst * p2 = q; // ցուցիչ դեպի կայուն int const int * p3 = q; // ցուցիչը դեպի կայուն ինտ Մեկ այլ միջոց է մտածել «*» - ի մասին, քանի որ գրավում է իր ամենամեծ կապի միավորը: «Կոնստը» գրավում է ամենափոքր միավորը ՝ ձախ կամ աջ, որը կարող է: Այսպիսով, մտածեք վերը նշված օրինակների մասին ՝ (int *) const p1 = q; // մշտական ​​ցուցիչ դեպի int փոփոխական (int const) * p2 = q; // ցուցիչ դեպի կայուն int (const int) * p3 = q; // ցուցիչ դեպի անընդհատ int Այլ կերպ ասած, որակավորումը փոփոխականից անմիջապես առաջ սահմանման առաջին բառն է:

պատասխանել 4:
Const և ցուցիչ. Անհրաժեշտ է տարբերակել ցուցիչից դեպի փոփոխականի կայուն և կայուն ցուցիչ: Ահա ցուցիչը դեպի հաստատուն. Const int * p; Հետևյալ հայտարարությունն անվավեր է, քանի որ փորձ է արվում փոխել հաստատության արժեքը. * P = 3; Բայց սա օրինական է, քանի որ ցուցիչն ինքնին հաստատուն չէ. P = & x; Մյուս կողմից, այս հռչակագիրը ցույց է տալիս փոփոխականության մշտական ​​ցուցիչը: int * const p; Այս դեպքում թույլատրվում է հետևյալ հայտարարությունը, քանի որ փոփոխականը կարող է փոփոխվել. * P = 3; Այնուամենայնիվ, սա այն դեպքը չէ, քանի որ փորձ է արվում փոխել հաստատության արժեքը: p =? Կարելի է հաստատուն ցուցիչ հաստատել: Այս դեպքում ոչ ցուցիչի արժեքը և ոչ էլ հիմնական տվյալների կետի արժեքը չեն կարող փոխվել. Const int * const p; Ահա շարադրությունը հիշելու մի եղանակ (Բյառն Ստրուստրուպի կողմից). Նշե'ք, որ const ցուցիչներում «կոնստ» -ը միշտ հետևում է «*» -ին: Օրինակ ՝ int * const p1 = q; // մշտական ​​ցուցիչ դեպի int փոփոխական int intst * p2 = q; // ցուցիչ դեպի կայուն int const int * p3 = q; // ցուցիչը դեպի կայուն ինտ Մեկ այլ միջոց է մտածել «*» - ի մասին, քանի որ գրավում է իր ամենամեծ կապի միավորը: «Կոնստը» գրավում է ամենափոքր միավորը ՝ ձախ կամ աջ, որը կարող է: Այսպիսով, մտածեք վերը նշված օրինակների մասին ՝ (int *) const p1 = q; // մշտական ​​ցուցիչ դեպի int փոփոխական (int const) * p2 = q; // ցուցիչ դեպի կայուն int (const int) * p3 = q; // ցուցիչ դեպի անընդհատ int Այլ կերպ ասած, որակավորումը փոփոխականից անմիջապես առաջ սահմանման առաջին բառն է:

պատասխանել 5:
Const և ցուցիչ. Անհրաժեշտ է տարբերակել ցուցիչից դեպի փոփոխականի կայուն և կայուն ցուցիչ: Ահա ցուցիչը դեպի հաստատուն. Const int * p; Հետևյալ հայտարարությունն անվավեր է, քանի որ փորձ է արվում փոխել հաստատության արժեքը. * P = 3; Բայց սա օրինական է, քանի որ ցուցիչն ինքնին հաստատուն չէ. P = & x; Մյուս կողմից, այս հռչակագիրը ցույց է տալիս փոփոխականության մշտական ​​ցուցիչը: int * const p; Այս դեպքում թույլատրվում է հետևյալ հայտարարությունը, քանի որ փոփոխականը կարող է փոփոխվել. * P = 3; Այնուամենայնիվ, սա այն դեպքը չէ, քանի որ փորձ է արվում փոխել հաստատության արժեքը: p =? Կարելի է հաստատուն ցուցիչ հաստատել: Այս դեպքում ոչ ցուցիչի արժեքը և ոչ էլ հիմնական տվյալների կետի արժեքը չեն կարող փոխվել. Const int * const p; Ահա շարադրությունը հիշելու մի եղանակ (Բյառն Ստրուստրուպի կողմից). Նշե'ք, որ const ցուցիչներում «կոնստ» -ը միշտ հետևում է «*» -ին: Օրինակ ՝ int * const p1 = q; // մշտական ​​ցուցիչ դեպի int փոփոխական int intst * p2 = q; // ցուցիչ դեպի կայուն int const int * p3 = q; // ցուցիչը դեպի կայուն ինտ Մեկ այլ միջոց է մտածել «*» - ի մասին, քանի որ գրավում է իր ամենամեծ կապի միավորը: «Կոնստը» գրավում է ամենափոքր միավորը ՝ ձախ կամ աջ, որը կարող է: Այսպիսով, մտածեք վերը նշված օրինակների մասին ՝ (int *) const p1 = q; // մշտական ​​ցուցիչ դեպի int փոփոխական (int const) * p2 = q; // ցուցիչ դեպի կայուն int (const int) * p3 = q; // ցուցիչ դեպի անընդհատ int Այլ կերպ ասած, որակավորումը փոփոխականից անմիջապես առաջ սահմանման առաջին բառն է: