<?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%3Asgha014</id>
	<title>SE250:lab-2:sgha014 - 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%3Asgha014"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:sgha014&amp;action=history"/>
	<updated>2026-04-19T20:27:01Z</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:sgha014&amp;diff=5194&amp;oldid=prev</id>
		<title>Mark: 18 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:sgha014&amp;diff=5194&amp;oldid=prev"/>
		<updated>2008-11-03T05:19:09Z</updated>

		<summary type="html">&lt;p&gt;18 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The first task was to compare the sizes of differnt types of pointers.&lt;br /&gt;
&lt;br /&gt;
I started out with int:&lt;br /&gt;
&lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
 	int x = 1;&lt;br /&gt;
 	int *ip;&lt;br /&gt;
 &lt;br /&gt;
 	ip=&amp;amp;x;&lt;br /&gt;
 &lt;br /&gt;
 	printf(&amp;quot;%d\n&amp;quot;, sizeof(ip));&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The output was: &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next i tried it with type double:&lt;br /&gt;
&lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
 	double x = 1.0;&lt;br /&gt;
 	double *ip;&lt;br /&gt;
 &lt;br /&gt;
 	ip=&amp;amp;x;&lt;br /&gt;
 &lt;br /&gt;
 	printf(&amp;quot;%f\n&amp;quot;, sizeof(ip));&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The output was: &amp;#039;&amp;#039;&amp;#039;0.000000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This seemed like a really crazy result so with the help of a tutor i realised that in the print statement it should always be %d because we are always printing out  the size so we want in to be an integer.&lt;br /&gt;
&lt;br /&gt;
So i changed that part to&lt;br /&gt;
&lt;br /&gt;
printf(&amp;quot;%f\n&amp;quot;, sizeof(ip)); and the output was: &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039;  (again???)&lt;br /&gt;
&lt;br /&gt;
Next i tried it using char type and the result was.....&amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; again!?&lt;br /&gt;
At this point i decided to ask the tutor what was going on....&lt;br /&gt;
&lt;br /&gt;
SO while i was listening to the explaination i realised that he had talked about this in the lecture and i had completely forgotten about it. So the reason why its always 4 is beacause the adress is stored in 4bytes so beacause the pointer points to an adress, the size we get is always 4.&lt;br /&gt;
&lt;br /&gt;
Moving on to the 2nd step....&lt;br /&gt;
&lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
 	int x;&lt;br /&gt;
 	int y;&lt;br /&gt;
 &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;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
the output was:  &amp;#039;&amp;#039;&amp;#039;&amp;amp;x=0021FBD0, &amp;amp;y=0021FBC4, diff=3&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
with (long)&amp;amp;x-9long)&amp;amp;y   the differnce came out as &amp;#039;&amp;#039;&amp;#039;12&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Step 3....&lt;br /&gt;
&lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
 	int x;&lt;br /&gt;
 	char arr[4];&lt;br /&gt;
 	int y;&lt;br /&gt;
 &lt;br /&gt;
 	printf(&amp;quot;%d\n&amp;quot;, sizeof(arr));&lt;br /&gt;
 	printf(&amp;quot;arr=%d, &amp;amp;arr=%d\n&amp;quot;, arr, &amp;amp;arr);&lt;br /&gt;
 	printf(&amp;quot;arr+4=%d, &amp;amp;arr[4]=%d\n&amp;quot;, arr+4, &amp;amp;arr[4]);&lt;br /&gt;
 	&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
the output was: &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;arr=2620704, &amp;amp;arr=2620704&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;arr+4=2620708, &amp;amp;arr[4]=2620708&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
varying the size of the array gave these results:&lt;br /&gt;
for size zero the compiler gave and error..&lt;br /&gt;
for 1-10 the output was: &amp;#039;&amp;#039;&amp;#039;6 6 6 6 7 7 7 7 8 8&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
on the linux server the output was (for size 0 to 10): &amp;#039;&amp;#039;&amp;#039;1 1 1 1 2 1 1 1 1 1 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
hmmmmm........??????&lt;br /&gt;
&lt;br /&gt;
STEP 4&lt;br /&gt;
printing out the differnce between the adresses of x and y when they are global variables...&lt;br /&gt;
output is: &amp;#039;&amp;#039;&amp;#039;&amp;amp;x=00247168, &amp;amp;y=00247164, diff=1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
and for the task with the array...&lt;br /&gt;
&lt;br /&gt;
 int x;&lt;br /&gt;
 char arr[4];&lt;br /&gt;
 int y;&lt;br /&gt;
 &lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
 	printf(&amp;quot;%d\n&amp;quot;, sizeof(arr));&lt;br /&gt;
 	printf(&amp;quot;arr=%d, &amp;amp;arr=%d\n&amp;quot;, arr, &amp;amp;arr);&lt;br /&gt;
 	printf(&amp;quot;arr+4=%d, &amp;amp;arr[4]=%d\n&amp;quot;, arr+4, &amp;amp;arr[4]);&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
The output is: &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;arr=11956600, &amp;amp;arr=11956600&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;arr+4=11956604, &amp;amp;arr[4]=11956604&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
varying the size of the array and printing out the differnce between &amp;amp;x and &amp;amp;y always gave an output of &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; each time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
STEP 5&lt;br /&gt;
&lt;br /&gt;
the values i got for p1 and p2 is &amp;#039;&amp;#039;&amp;#039;2554772&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;2554760&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
STEP 7&lt;br /&gt;
results:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;my_struct=-858993460&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;offsets:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;my_char: 0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;my_short: -2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;my_int: -4&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;my_long:-8&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;my_float: -12&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;my_double: -16&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
STEP 8:&lt;br /&gt;
&lt;br /&gt;
union???? whats a union?? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------&lt;br /&gt;
There was waaaay to much to do in this lab.....the tasks themselves werent hard....but there was so much to do...especially since we had 2 do it both on windows and linux....&lt;br /&gt;
and since i spent about 30mins of my lab trying 2 actually get into the linux server....so i only tested one of the tasks on linux....&lt;br /&gt;
i did most of this lab after the lab had actually ended....there was simply too much work to finih in the 2hrs we get for our lab...&lt;br /&gt;
----------------------------------------------&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>