interview questions and answers

Technical Interview Questions | C Interview Questions

Home interview questions Programming interview questions C 
Friday, 10 February 2012
Main Menu
Home
Online Test
Contest
Search
FAQs
Contact Us
Login
Most Popular Category
JAVA

Microsoft Technologies
ASP, C#, DotNet, ...

Programming
C++, PHP, VB, ...

SAP

Testing

Web Technologies

Polls
Does personal networking help in job search?
 
IT Placement Papers interview questions Programming interview questions C

This category contains C Interview Questions and Answers


What is the difference between char *a and char a[]?

PDF Print E-mail
There is a lot of difference!

char a[] = \"string\";
char *a = \"string\";

The declaration char a[] asks for space for 7 characters and see that its known by the name \"a\". In contrast, the declaration char *a, asks for a place that holds a pointer, to be known by the name \"a\". This pointer \"a\" can point anywhere. In this case its pointing to an anonymous array of 7 characters, which does have any name in particular. Its just present in memory with a pointer keeping track of its location.



char a[] = \"string\";

   +----+----+----+----+----+----+------+
a: | s  |  t |  r |  i |  n |  g | \'\\0\' |
   +----+----+----+----+----+----+------+
   a[0] a[1] a[2] a[3] a[4] a[5] a[6]

char *a = \"string\";

+-----+          +---+---+---+---+---+---+------+
|  a: | *======> | s | t | r | i | n | g | \'\\0\' |
+-----+          +---+---+---+---+---+---+------+
Pointer          Anonymous array



It is curcial to know that a[3] generates different code depending on whether a is an array or a pointer. When the compiler sees the expression a[3] and if a is an array, it starts at the location \"a\", goes three elements past it, and returns the character there. When it sees the expression a[3] and if a is a pointer, it starts at the location \"a\", gets the pointer value there, adds 3 to the pointer value, and gets the character pointed to by that value.

If a is an array, a[3] is three places past a. If a is a pointer, then a[3] is three places past the memory location pointed to by a. In the example above, both a[3] and a[3] return the same character, but the way they do it is different!

Doing something like this would be illegal.

char *p = \"hello, world!\";
p[0] = \'H\';


Be first to comment this article

Only registered users can write comments.
Please login or register.

 
< Prev   Next >

Technical Interview Questions | C Interview Questions

Top!
Top!
Copyright © 2008 InterviewDuniya.com All Rights Reserved.
Partner Site: Maheshwari Matrimony