Дадени са дефинициите:
int ival = 1024; int *iptr; double *dptr;
Обяснете какво се случва на всеки ред. Кои от следните присвоявания са неправилни? Обяснете защо:
- ival = *iptr;
- ival = iptr;
- *iptr = ival;
- iptr = ival;
- *iptr = &ival;
- iptr = &ival;
- dptr = iptr;
- dptr = *iptr;
1. ival = *iptr; – Не е правилно, защото указателят „*iptr“ не сочи към нищо.
2. ival = iptr; – Не е правилно, защото този показател няма стойност
3. *iptr = ival; – Числото към което сочи указателят присвоява стойността на променливата.
4. iptr = ival; – Не е възможно понеже не е посечен адресът на променливата
5. *iptr = &ival; – Не е правилно ,защото числото към което сочи показателя не може да присвои стойността на адресът на променливата
6. iptr = &ival; Променливата присвоята адресът на стойността на променливата.
7. dptr = iptr; – Единия показател присвоята другия . Възможно.
8. dptr = *iptr; – Невъзможно. втория показател сочи към конкретна стойност а не към адреса на число.
1. Не може да бъде присвоен, защото указателят не сочи към нищо!
2. Не е вярно, защото указателят iptr няма адрес!
3. Не е вярно, защото указателят iptr не е инициализиран!
4. Не е коректно зададен!
5. Вярно, защото коректно е написан!
6. Вече е вярно, защото имаме оказан адрес!
7 и 8 не са верни защото от различен тип!