Discussion Locked

C Lang - Pointer

0 helpful
5 replies
Closed to new repliesThis discussion is closed. It stays readable, but it takes no new replies.

Pls help me to see if I have answer correctly.
If my answer is wrong, pls help to explain
- James

char first=?w?, second; /* ASCII value of ?w? is 119 */
char *pfirst, *psecond = &second; /* question (b) */

*psecond = first + 10;
first = second + 1; /* question (c) */
pfirst = &first; /* question (d) */

Suppose each character occupies 1 byte of memory. If the value assigned to first is stored in address 1200 and the value assigned to second is stored in address 1201, then

a)What value is represented by &second ?
ANSWER : 1201

b)What value is assigned to psecond ?
ANSWER : 120

c)What value is assigned to first ?
ANSWER : 129

d)What value is assigned to pfirst ?
ANSWER : 130

e)What value is represented by (100 + *pfirst)?
ANSWER : 1300

5 replies

by tjc

It looks like second is not assigned anything when you define it and you start using it with nothing defined.

by bojidar alexandrov

Hi,
I will go by questions and explain..
A) Correct
B) 1201 --- psecond contains the address of second (psecond=&second)
C) 130 ---
*psecond = first + 10; /* here second is set to 129) */
first = second + 1; /* Here first is set to 130 */
D) 1200 --- pfirst contains the address of first (pfirst = &first)
E) 230 --- (100 + *pfirst) See C) - there first is set to 130

P.S.
*somepointer means the value pointed by somepointer

P.P.S.
char *pfirst, *psecond = &second;
here is not set the value pointed by psecond but the pointer itself
this is equal to:
char *psecond;
psecond = &second;
not to:
char *psecond;
*psecond=&second;//this is wrong

This discussion is closed to new replies.