<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-2%3Aaomr001</id>
	<title>SE250:lab-2:aomr001 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-2%3Aaomr001"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:aomr001&amp;action=history"/>
	<updated>2026-04-29T03:13:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE250:lab-2:aomr001&amp;diff=4690&amp;oldid=prev</id>
		<title>Mark: 10 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:aomr001&amp;diff=4690&amp;oldid=prev"/>
		<updated>2008-11-03T05:18:50Z</updated>

		<summary type="html">&lt;p&gt;10 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The lab task for todays lab was to find more and explore pointers and different data structures.&lt;br /&gt;
I have done a number of different tasks and compiled and ran these on 2 different machines, on a windows &lt;br /&gt;
operating system (x32) and on a LINUX machine (x64) to see what effect that would have on my results. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== task1 ===&lt;br /&gt;
for task 1 .. my code was : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
char *ip;&lt;br /&gt;
    double *ip1;&lt;br /&gt;
    short *ip2;&lt;br /&gt;
    float *ip3;&lt;br /&gt;
    long *ip4;&lt;br /&gt;
    printf(&amp;quot;ip = %d\nip1 = %d\nip2 = %d\nip3 = %d\nip4 = %d\n&amp;quot;,&lt;br /&gt;
	   sizeof(ip),sizeof(ip1),sizeof(ip2),sizeof(ip3),sizeof(ip4));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the output on the vista os was:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip = 4&lt;br /&gt;
ip1 = 4&lt;br /&gt;
ip2 = 4&lt;br /&gt;
ip3 = 4&lt;br /&gt;
ip4 = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while the output on the linux machine was:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip = 4&lt;br /&gt;
ip1 = 4&lt;br /&gt;
ip2 = 4&lt;br /&gt;
ip3 = 4&lt;br /&gt;
ip4 = 4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== task2 ===&lt;br /&gt;
a)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf(&amp;quot;address of x= %p, address of y= %p, difference= %ld\n&amp;quot;,&amp;amp;x, &amp;amp;y ,(long)(&amp;amp;x - &amp;amp;y));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on windows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
address of x= 0x22ccc4, address of y= 0x22ccc0, difference= 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ouput on linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;x = 0xfff0b9dc, &amp;amp;y = 0xfff0b9d8, diff = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
i was asked to do a little editing to the code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf(&amp;quot;address of x= %p, address of y= %p, difference= %ld\n&amp;quot;,&amp;amp;x, &amp;amp;y  ,((long)&amp;amp;x -(long)&amp;amp;y));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
output on windows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
address of x= 0x22ccc4, address of y= 0x22ccc0, difference= 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;x = 0xfff0b9dc, &amp;amp;y = 0xfff0b9d8, diff = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== task3 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf(&amp;quot;sizeof arr = %d\n&amp;quot;, sizeof(arr));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on windows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sizeof arr = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
size of arr = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf(&amp;quot;address of arr  = %p&amp;quot;,&amp;amp;arr);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
address of arr = 2280640&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
address of arr = 0xffc1d9d4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf(&amp;quot;arr+4 = %d, &amp;amp;arr[4]= %d&amp;quot;, arr+4,&amp;amp;arr[4]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arr+4 = -2225704, &amp;amp;arr[4]= -2225704&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for (i =0; i &amp;lt; 10; i++){&lt;br /&gt;
    arr[i];&lt;br /&gt;
    printf(&amp;quot;diff &amp;amp;x - &amp;amp;y  = %d\n&amp;quot;,(long)(&amp;amp;x - &amp;amp;y));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[0] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[1] = 2&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[2] = 2&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[3] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[4] = 2&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[5] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[6] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[7] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[8] = 4&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[9] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[10] = 8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
diff &amp;amp;x - &amp;amp;y  = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  printf(&amp;quot;x = %d, y = %d&amp;quot;,x,y);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = 10, y = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = 167772160, y = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== task4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
X and y as global variables&lt;br /&gt;
printf(&amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;,&amp;amp;x,&amp;amp;y, (long)(&amp;amp;x - &amp;amp;y));&lt;br /&gt;
printf(&amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;,&amp;amp;x,&amp;amp;y, (long)&amp;amp;x - (long)&amp;amp;y);&lt;br /&gt;
printf(“sizeof(arr) = &amp;amp;d”, sizeof(arr));&lt;br /&gt;
printf(&amp;quot;address of arr = %d&amp;quot;,&amp;amp;arr);&lt;br /&gt;
printf(&amp;quot;address of arr+4  = %d&amp;quot;,&amp;amp;arr+4);&lt;br /&gt;
printf(&amp;quot;address of arr [4]= %d&amp;quot;,&amp;amp;arr[4]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
sizeof(arr) = 4&lt;br /&gt;
address of arr = 4206640&lt;br /&gt;
address of arr+4 = 4206656&lt;br /&gt;
address of arr[4] = 4206644&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[0] = 8&lt;br /&gt;
btwn &amp;amp;x and &amp;amp;y whn arr[1] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[2] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[3] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[4] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[5] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[6] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[7] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[8] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[9] = 8&lt;br /&gt;
diff btwn &amp;amp;x and &amp;amp;y whn arr[10] = 8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== task5 === &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int *p1, *p2;&lt;br /&gt;
{ int q; p1 = &amp;amp;q; }&lt;br /&gt;
{ int r; p2 = &amp;amp;r; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
p1 = 2280636 , p2 = 2280632&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
p1 = -7644716, p2 = -7644716&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== task6 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp = local str( );&lt;br /&gt;
printf( ”sp = %p(%s)\n”, sp, sp );&lt;br /&gt;
sp = local str( );&lt;br /&gt;
local str2( );&lt;br /&gt;
printf( ”sp = %p(%s)\n”, sp, sp );&lt;br /&gt;
sp = static str( );&lt;br /&gt;
local str2( );&lt;br /&gt;
printf( ”sp = %p(%s)\n”, sp, sp );&lt;br /&gt;
sp = malloc str( );&lt;br /&gt;
local str2( );&lt;br /&gt;
printf( ”sp = %p(%s)\n”, sp, sp );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp = 0x22cc90(456)&lt;br /&gt;
sp = 0x22cc90(efg)&lt;br /&gt;
sp = 0x402000(tuvwxyz)&lt;br /&gt;
sp = 0x10401a0(hijklmn)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp = 0xffbc29a4(þîÐ)&lt;br /&gt;
sp = 0xffbc29a4(abcdefg)&lt;br /&gt;
sp = 0x10010cd4(tuvwxyz)&lt;br /&gt;
sp = 0x10011008(hijklmn)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
strcpy( sp, ”XXXXXXX” );&lt;br /&gt;
printf( ”sp X’d = %p(%s)\n”, sp, sp );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp = 0x22cc90(456)&lt;br /&gt;
sp X&amp;#039;d = 0x22cc90(-0@)&lt;br /&gt;
sp = 0x22cc90(efg)&lt;br /&gt;
sp X&amp;#039;d = 0x22cc90(-0@)&lt;br /&gt;
sp = 0x402000(tuvwxyz)&lt;br /&gt;
sp X&amp;#039;d = 0x402000(XXXXXXX)&lt;br /&gt;
sp = 0xda01a0(hijklmn)&lt;br /&gt;
sp X&amp;#039;d = 0xda01a0(XXXXXXX)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp = 0xffb0f9a4(þîÐ)&lt;br /&gt;
sp X&amp;#039;d = 0xffb0f9a4(XXXXXXX)&lt;br /&gt;
sp = 0xffb0f9a4(abcdefg)&lt;br /&gt;
sp X&amp;#039;d = 0xffb0f9a4(XXXXXXX)&lt;br /&gt;
sp = 0x10010dc0(tuvwxyz)&lt;br /&gt;
sp X&amp;#039;d = 0x10010dc0(XXXXXXX)&lt;br /&gt;
sp = 0x10011008(hijklmn)&lt;br /&gt;
sp X&amp;#039;d = 0x10011008(XXXXXXX)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== task7 ===&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;my_struct = 0x0&lt;br /&gt;
offsets:&lt;br /&gt;
my_char: 0&lt;br /&gt;
my_short: -2&lt;br /&gt;
my_int: -4&lt;br /&gt;
my_long: -8&lt;br /&gt;
my_float: -12&lt;br /&gt;
my_double: -16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;my_struct = 0xffe879c0&lt;br /&gt;
offsets:&lt;br /&gt;
my_char: 0&lt;br /&gt;
my_short: -2&lt;br /&gt;
my_int: -4&lt;br /&gt;
my_long: -8&lt;br /&gt;
my_float: -12&lt;br /&gt;
my_double: -16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== task8 ===&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;my_struct = 0x0&lt;br /&gt;
offsets:&lt;br /&gt;
my_char: 0&lt;br /&gt;
my_short: 0&lt;br /&gt;
my_int: 0&lt;br /&gt;
my_long: 0&lt;br /&gt;
my_float: 0&lt;br /&gt;
my_double: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ouput on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;my_struct = 0xffafe9d8&lt;br /&gt;
offsets:&lt;br /&gt;
my_char: 0&lt;br /&gt;
my_short: 0&lt;br /&gt;
my_int: 0&lt;br /&gt;
my_long: 0&lt;br /&gt;
my_float: 0&lt;br /&gt;
my_double: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== task9 ===&lt;br /&gt;
output on WINDOWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp1 address: 0x22ccc4&lt;br /&gt;
sp2 address: 0x22ccc0&lt;br /&gt;
sp3 address: 0x22ccbc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
output on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp1 address: 0xffb5b9dc&lt;br /&gt;
sp2 address: 0xffb5b9d8&lt;br /&gt;
sp3 address: 0xffb5b9d4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== task10 ===&lt;br /&gt;
&lt;br /&gt;
output on windows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local_str = 0x401050&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ouput on LINUX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local_str = 0x100004dc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>