Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmers Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use it's exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

5 code snippets

Posts: 140Member
Here and the questions and my answers:

1.) Print the elements of array values using pointer/offset notation.

ANS: for ( i = 0; i < SIZE; i++ )
printf("%.1f", values);

2.) Print the elements of array values by subscripting the pointer to the array.

ANS: for ( i = 0; i < SIZE; i++ )
printf("%.1f", values[ i ] );

3.) Refer to element 5 of array values using array subscript notation, pointer/offset notation with the array name as the pointer, pointer subscript notation and pointer/offset notation.

ANS: values[ 5 ]
*( values + 5 )
values[ 5 ]
*( values + 5 )

4.) What address is referenced by vPtr + 3? What value is stored at that location?

ANS: The address is 1002500 + 3 * 4 = 1002512. The value is 3.3

5.) Assuming vPtr points to values[ 4 ], what address is referenced by vPtr -= 4. What value is stored at that location?

ANS: The address of values[ 4 ] is 1002500 + 4 * 4 = 1002516
The address of vPtr -= 4 is 1002520 - 4 * 4 = 1002504
The value of that location is l.1

how'd I do?

thanks

· ·

• Posts: 9,763Member
[b][red]This message was edited by stober at 2005-8-8 11:39:4[/red][/b][hr]
: 5.) Assuming vPtr points to values[ 4 ], what address is referenced by vPtr -= 4. What value is stored at that location?
:
the answer depends on how is vPtr defined? Pointers are incremented and decremeneted by the size of the object to which they point. On a 32-bit compiler where sizeof(int) = 4, then vPtr -= 4 will decrement the pointer by 16 bytes. So the answer to the queation is that vPtr will point to &values[0].
[code]
vPtr - (4 * sizeof(int)) = vPtr - (4 * 4) = (address of vPtr) - 16
assume vPtr = 10000 then vPtr -= 4 will result in address 10000 - 16.
[/code]

· ·
• Posts: 715Member
: : 5.) Assuming vPtr points to values[ 4 ], what address is referenced by vPtr -= 4. What value is stored at that location?
: :
: the answer depends on how is vPtr defined? Pointers are incremented and decremeneted by the size of the object to which they point. On a 32-bit compiler where sizeof(int) = 4, then vPtr -= 4 will decrement the pointer by 16 bytes. [red]So the answer to the queation is that vPtr will point to &values[0].[/red]
: [code]
: vPtr - (4 * sizeof(int)) = vPtr - (4 * 4) = (address of vPtr) - 16
: assume vPtr = 10000 then vPtr -= 4 will result in address 10000 - 16.
: [/code]

[red]if the type of [blue]*vPtr[/blue] and [blue]*values[/blue] are same and [blue]vPtr[/blue] points to [blue]values[4][/blue], then after executing [blue]vPtr -= 4[/blue], [blue]vPtr[/blue] will always point to [blue]&values[0][/blue], isnt it?[/red]

· ·
• Posts: 9,763Member
:
: [red]if the type of [blue]*vPtr[/blue] and [blue]*values[/blue] are same and [blue]vPtr[/blue] points to [blue]values[4][/blue], then after executing [blue]vPtr -= 4[/blue], [blue]vPtr[/blue] will always point to [blue]&values[0][/blue], isnt it?[/red]
:
:

Yes -- vPtr will point to values[0], the address stored in vPtr will be the same as &values[0].
· ·
• Posts: 140Member
do the first 4 look good?
· ·
• Posts: 9,763Member
: do the first 4 look good?
:

#1 is incorrect -- it always prints the values[0].
· ·
• Posts: 140Member
1.) Print the elements of array values using pointer/offset notation.

ANS: for ( i = 0; i < SIZE; i++ )
printf("%.1f", values[ i] );

is it right now? how about the other ones?
· ·
• Posts: 9,763Member
[b][red]This message was edited by stober at 2005-8-8 13:25:36[/red][/b][hr]
: is it right now? how about the other ones?
:

I THINK #2 is wrong too. assuming values of an array of floats
[code]
float *vPtr = values;
for ( i = 0; i < SIZE; i++ )
printf("%.1f", *vPtr++ );

[/code]

· ·
• Posts: 2,444Member
: 1.) Print the elements of array values using pointer/offset notation.
:
: ANS: for ( i = 0; i < SIZE; i++ )
: printf("%.1f", [red]*(values + i)[/red] );
:
: is it right now? how about the other ones?
:

Since you need to use Pointer/Offset, you can't use Array notation.

Greets...
Richard

· ·