Posted on 19th September 20092 Responses
The & and * Pointer Operators- Definition and Example

The & and * Pointer Operators
A pointer is the memory address of some object. A pointer variable is a variable that is specifically declared to hold a pointer to an object of its specified type. Knowing a variable’s address can be of great help in certain types of routines. However, pointers have three main functions in C/C++. They can provide a fast means of referencing array elements. They allow functions to modify their calling parameters. Lastly, they support linked lists and other dynamic data structures.  The two operators that are used to manipulate pointers. The first pointer operator is &, a unary operator that returns the memory address of its operand. (Remember, a unary operator only requires one operand.) For example,
m = &count;
places into m the memory address of the variable count. This address is the computer’s internal location of the variable. It has nothing to do with the value of count. You can think of & as meaning “the address of.” Therefore, the preceding assignment statement means “m receives the address of count.”
To better understand this assignment, assume that the variable count is at memory location 2000. Also assume that count has a value of 100. Then, after the previous assignment, m will have the value 2000. The second pointer operator is * , which is the complement of &. The * is a unary operator that returns the value of the variable located at the address that follows it. For example, if m contains the memory address of the variable count,
q = *m;
places the value of count into q. Now q has the value 100 because 100 is stored at location 2000, the memory address that was stored in m. Think of * as meaning “at address.” In this case, you could read the statement as ” q receives the value at address m.”
Unfortunately, the multiplication symbol and the “at address” symbol are the same, and the symbol for the bitwise AND and the “address of” symbol are the same. These operators have no relationship to each other. Both & and * have a higher precedence than all other arithmetic operators except the unary minus, with which they share equal precedence. Variables that will hold memory addresses (i.e., pointers), must be declared by putting * in front of the variable name. This indicates to the compiler that it will hold a pointer. For example, to declare ch as a pointer to a character, write char *ch
Here, ch is not a character but a pointer to a character—there is a big difference. The type of data that a pointer points to, in that case char, is called the base type of the pointer. However, the pointer variable itself is a variable that holds the address to an object of the base type. Thus, a character pointer (or any pointer) is of sufficient size to hold an address as defined by the architecture of the computer that it is running on. However, remember that a pointer should only point to data that is of that pointer’s base type. You can mix both pointer and non-pointer variables in the same declaration statement. For example,
int x, *y, count;
declares
x
and
count
as integer types and
y
as a pointer to an integer type.
The following program uses
*
and
&
operators to put the value 10 into a variable called target. As expected, this program displays the value 10 on the screen.
#include
int main(void)
{
int target, source;
int *m;
source = 10;
m = &source;
target = *m;
printf(”%d”, target);
return 0;
}

Popularity: 1% [?]

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • BlinkList
  • blogmarks
  • BlogMemes Fr
  • BlogMemes Sp
  • Blogosphere News
  • blogtercimlap
  • co.mments
  • connotea
  • Current
  • Design Float
  • Diigo
  • DotNetKicks
  • DZone
  • eKudos
  • email
Comments
comment by Polprav
Posted on October 15, 2009 at 3:23 pm

Hello from Russia!
Can I quote a post in your blog with the link to you?

comment by Anil
Posted on November 16, 2009 at 11:10 pm

Thanks for your valuable comment….

Leave a Response