#include <stdio.h>
// a structure to hold the employee info
struct employee {
long int clockNum;
float wageRate;
float hours;
} ;
int main( void ) {
float * floatPtr; // pointer to a floating point variable
float wageRate; // hourly wage rate for employee
floatPtr = & wageRate; // set pointer to address of WageRate
// Note: The contents of a pointer
// variable is an address
* floatPtr = 10.60 ; // set wageRate indirectly with a pointer
// or
wageRate = 10.60 ; // set wageRate directly via variable name
int clockNum; // unique ID for an employee
int * intPtr; // pointer to an integer variable
intPtr = & clockNum; // set intPtr to point to clockNum
* intPtr = 98401 ; // set clockNum using the pointer
char firstName [ 6 ] = { "Tim" } ; // char array with a string
char * charPtr; // pointer to a character
charPtr = firstName; // set pointer to first element in the array
// … same as setting it to: &firstName[0]
// Note that charPtr can point to any array
// element in firstName since each is a char type
struct employee myEmp; // structure variable to hold employee
struct employee * empPtr; // pointer to structure of that type
empPtr = & myEmp; // set empPtr to point to the structure
myEmp.clockNum = 98401 ; // set this member directly
( * empPtr) .wageRate = 10.60 ; // use the pointer to set this member
empPtr-> hours = 51.0 ; // use short hand notation with the
// pointer to set this member
printf ( "\n Type\t \t Byte Size" ) ; printf ( "\n ----------\t ---------" ) ; printf ( "\n %-10.10s %i" , "int" , sizeof ( int ) ) ; printf ( "\n %-10.10s %i" , "long int" , sizeof ( long int ) ) ; printf ( "\n %-10.10s %i" , "float" , sizeof ( float ) ) ; printf ( "\n %-10.10s %i" , "double" , sizeof ( double ) ) ; printf ( "\n %-10.10s %i" , "char" , sizeof ( char ) ) ;
printf ( "\n \n \n Variable\t \t \t Bytes\t Value\t \t \t Start Address" ) ; printf ( "\n --------\t \t \t -----\t --------------\t --------------" ) ; printf ( "\n %-20.20s%i\t \t %6i\t \t \t %p" , "clockNum" , sizeof ( int ) , clockNum
, & clockNum
) ; printf ( "\n %-20.20s%i\t \t %p\t %p" , "intPtr" , sizeof ( int * ) , intPtr
, & intPtr
) ; printf ( "\n %-20.20s%i\t \t %5.2f\t \t \t %p" , "wageRate" , sizeof ( float ) , wageRate
, & wageRate
) ; printf ( "\n %-20.20s%i\t \t %p\t %p" , "floatPtr" , sizeof ( float * ) , floatPtr
, & floatPtr
) ; printf ( "\n %-20.20s%i\t \t %p\t %p" , "charPtr" , sizeof ( char * ) , charPtr
, & charPtr
) ; printf ( "\n %-20.20s%i\t \t %6i\t \t \t %p" , "myEmp" , sizeof ( struct employee
) , myEmp
, & myEmp
) ; printf ( "\n %-20.20s%i\t \t %p\t %p" , "empPtr" , sizeof ( struct employee
* ) , empPtr
, & empPtr
) ; printf ( "\n %-20.20s%i\t \t %6i\t \t \t %p" , "empPtr->clockNum" , sizeof ( long int ) , empPtr
-> clockNum
, & empPtr
-> clockNum
) ; printf ( "\n %-20.20s%i\t \t %5.2f\t \t \t %p" , "empPtr->wageRate" , sizeof ( float ) , empPtr
-> wageRate
, & empPtr
-> wageRate
) ; printf ( "\n %-20.20s%i\t \t %5.1f\t \t \t %p" , "empPtr->hours" , sizeof ( float ) , empPtr
-> hours
, & empPtr
-> hours
) ;
// use array index
printf ( "\n \n ***Print using the array indexes***" ) ; printf ( "\n Element\t Value\t Address" ) ; printf ( "\n -------\t -----\t --------------" ) ; for ( int i = 0 ; i< 6 ; ++ i)
{
printf ( "\n %i\t \t %c\t \t %p" , i
, firstName
[ i
] , & firstName
[ i
] ) ; } // for
printf ( "\n \n Using the array name, the string is %s" , firstName
) ;
// use the pointer to print just the String and info
printf ( "\n \n ***Print just the String using pointers***" ) ; printf ( "\n Element\t Value\t Address" ) ; printf ( "\n -------\t -----\t --------------" ) ; for ( int index = 0 ; * charPtr != '\0 ' ; ++ charPtr, ++ index)
{
printf ( "\n %i\t \t %c\t \t %p" , index
, * charPtr
, charPtr
) ; } // for
charPtr = firstName; // reset pointer to start of array
printf ( "\n \n Using a pointer to the start of the array, the string is %s" , charPtr
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBhIHN0cnVjdHVyZSB0byBob2xkIHRoZSBlbXBsb3llZSBpbmZvCnN0cnVjdCBlbXBsb3llZSB7ICAgIAogICAgbG9uZyBpbnQgY2xvY2tOdW07CiAgICBmbG9hdCB3YWdlUmF0ZTsKICAgIGZsb2F0IGhvdXJzOwp9OwoKaW50IG1haW4odm9pZCkgewoKICAgIGZsb2F0ICogZmxvYXRQdHI7ICAgLy8gcG9pbnRlciB0byBhIGZsb2F0aW5nIHBvaW50IHZhcmlhYmxlCiAgICBmbG9hdCB3YWdlUmF0ZTsgICAgIC8vIGhvdXJseSB3YWdlIHJhdGUgZm9yIGVtcGxveWVlCgogICAgZmxvYXRQdHIgPSAmd2FnZVJhdGU7ICAgLy8gc2V0IHBvaW50ZXIgdG8gYWRkcmVzcyBvZiBXYWdlUmF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogIFRoZSBjb250ZW50cyBvZiBhIHBvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyaWFibGUgaXMgYW4gYWRkcmVzcwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICpmbG9hdFB0ciA9IDEwLjYwOyAgICAgLy8gc2V0IHdhZ2VSYXRlIGluZGlyZWN0bHkgd2l0aCBhIHBvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3IKICAgIHdhZ2VSYXRlID0gMTAuNjA7ICAgICAgLy8gc2V0IHdhZ2VSYXRlIGRpcmVjdGx5IHZpYSB2YXJpYWJsZSBuYW1lCiAgICAKICAgIGludCBjbG9ja051bTsgICAgICAgICAgLy8gIHVuaXF1ZSBJRCBmb3IgYW4gZW1wbG95ZWUKICAgIGludCAqIGludFB0cjsgICAgICAgICAgLy8gcG9pbnRlciB0byBhbiBpbnRlZ2VyIHZhcmlhYmxlCgogICAgaW50UHRyID0gJmNsb2NrTnVtOyAgICAvLyBzZXQgaW50UHRyIHRvIHBvaW50IHRvIGNsb2NrTnVtCgogICAgKmludFB0ciA9IDk4NDAxOyAgICAgICAvLyBzZXQgY2xvY2tOdW0gdXNpbmcgdGhlIHBvaW50ZXIKCiAgICBjaGFyIGZpcnN0TmFtZSBbNl0gPSB7IlRpbSJ9OyAvLyBjaGFyIGFycmF5IHdpdGggYSBzdHJpbmcKICAgIGNoYXIgKiBjaGFyUHRyOyAgICAgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gYSBjaGFyYWN0ZXIKCiAgICBjaGFyUHRyID0gZmlyc3ROYW1lOyAgIC8vIHNldCBwb2ludGVyIHRvIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDigKYgc2FtZSBhcyBzZXR0aW5nIGl0IHRvOiAgJmZpcnN0TmFtZVswXQogICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgY2hhclB0ciBjYW4gcG9pbnQgdG8gYW55IGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpbiBmaXJzdE5hbWUgc2luY2UgZWFjaCBpcyBhIGNoYXIgdHlwZQogICAgICAgICAgICAgICAgICAgICAgIAogICAgc3RydWN0IGVtcGxveWVlIG15RW1wOyAgICAgICAvLyBzdHJ1Y3R1cmUgdmFyaWFibGUgdG8gaG9sZCBlbXBsb3llZQogICAgc3RydWN0IGVtcGxveWVlICogZW1wUHRyOyAgICAvLyBwb2ludGVyIHRvIHN0cnVjdHVyZSBvZiB0aGF0IHR5cGUKCiAgICBlbXBQdHIgPSAmbXlFbXA7ICAgICAgICAgICAgIC8vIHNldCBlbXBQdHIgdG8gcG9pbnQgdG8gdGhlIHN0cnVjdHVyZQoKICAgIG15RW1wLmNsb2NrTnVtID0gOTg0MDE7ICAgICAgLy8gc2V0IHRoaXMgbWVtYmVyIGRpcmVjdGx5CgogICAgKCplbXBQdHIpLndhZ2VSYXRlID0gMTAuNjA7ICAvLyB1c2UgdGhlIHBvaW50ZXIgdG8gc2V0IHRoaXMgbWVtYmVyCgogICAgZW1wUHRyLT5ob3VycyA9IDUxLjA7ICAgICAgICAvLyB1c2Ugc2hvcnQgaGFuZCBub3RhdGlvbiB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb2ludGVyIHRvIHNldCB0aGlzIG1lbWJlcgoJCglwcmludGYgKCJcblR5cGVcdFx0Qnl0ZSBTaXplIik7CiAgICBwcmludGYgKCJcbi0tLS0tLS0tLS1cdC0tLS0tLS0tLSIpOwoJcHJpbnRmICgiXG4lLTEwLjEwcyAgJWkiLCAiaW50Iiwgc2l6ZW9mKGludCkpOwoJcHJpbnRmICgiXG4lLTEwLjEwcyAgJWkiLCAibG9uZyBpbnQiLCBzaXplb2YobG9uZyBpbnQpKTsKCXByaW50ZiAoIlxuJS0xMC4xMHMgICVpIiwgImZsb2F0Iiwgc2l6ZW9mKGZsb2F0KSk7CglwcmludGYgKCJcbiUtMTAuMTBzICAlaSIsICJkb3VibGUiLCBzaXplb2YoZG91YmxlKSk7CiAgICBwcmludGYgKCJcbiUtMTAuMTBzICAlaSIsICJjaGFyIiwgc2l6ZW9mKGNoYXIpKTsKCQoJCglwcmludGYgKCJcblxuXG5WYXJpYWJsZVx0XHRcdEJ5dGVzXHRWYWx1ZVx0XHRcdFN0YXJ0IEFkZHJlc3MiKTsKICAgIHByaW50ZiAoIlxuLS0tLS0tLS1cdFx0XHQtLS0tLVx0LS0tLS0tLS0tLS0tLS1cdC0tLS0tLS0tLS0tLS0tIik7CglwcmludGYgKCJcbiUtMjAuMjBzJWlcdFx0JTZpXHRcdFx0JXAiLCAgImNsb2NrTnVtIiwgc2l6ZW9mKGludCksIGNsb2NrTnVtLCAmY2xvY2tOdW0pOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCVwXHQlcCIsICJpbnRQdHIiLCBzaXplb2YoaW50ICopLCBpbnRQdHIsICZpbnRQdHIpOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCU1LjJmXHRcdFx0JXAiLCAid2FnZVJhdGUiLCBzaXplb2YoZmxvYXQpLCB3YWdlUmF0ZSwgJndhZ2VSYXRlKTsKCXByaW50ZiAoIlxuJS0yMC4yMHMlaVx0XHQlcFx0JXAiLCAiZmxvYXRQdHIiLCBzaXplb2YoZmxvYXQgKiksIGZsb2F0UHRyLCAmZmxvYXRQdHIpOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCVwXHQlcCIsICJjaGFyUHRyIiwgc2l6ZW9mKGNoYXIgKiksIGNoYXJQdHIsICZjaGFyUHRyKTsJCiAgICBwcmludGYgKCJcbiUtMjAuMjBzJWlcdFx0JTZpXHRcdFx0JXAiLCAgIm15RW1wIiwgc2l6ZW9mKHN0cnVjdCBlbXBsb3llZSksIG15RW1wLCAmbXlFbXApOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCVwXHQlcCIsICJlbXBQdHIiLCBzaXplb2Yoc3RydWN0IGVtcGxveWVlICopLCBlbXBQdHIsICZlbXBQdHIpOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCU2aVx0XHRcdCVwIiwgImVtcFB0ci0+Y2xvY2tOdW0iLCBzaXplb2YobG9uZyBpbnQpLCBlbXBQdHItPmNsb2NrTnVtLCAmZW1wUHRyLT5jbG9ja051bSk7CglwcmludGYgKCJcbiUtMjAuMjBzJWlcdFx0JTUuMmZcdFx0XHQlcCIsICJlbXBQdHItPndhZ2VSYXRlIiwgc2l6ZW9mKGZsb2F0KSwgZW1wUHRyLT53YWdlUmF0ZSwgJmVtcFB0ci0+d2FnZVJhdGUpOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCU1LjFmXHRcdFx0JXAiLCAiZW1wUHRyLT5ob3VycyIsIHNpemVvZihmbG9hdCksIGVtcFB0ci0+aG91cnMsICZlbXBQdHItPmhvdXJzKTsJCgoJLy8gdXNlIGFycmF5IGluZGV4CglwcmludGYgKCJcblxuKioqUHJpbnQgdXNpbmcgdGhlIGFycmF5IGluZGV4ZXMqKioiKTsKCXByaW50ZiAoIlxuQXJyYXkiKTsKCXByaW50ZiAoIlxuRWxlbWVudFx0VmFsdWVcdEFkZHJlc3MiKTsKCXByaW50ZiAoIlxuLS0tLS0tLVx0LS0tLS1cdC0tLS0tLS0tLS0tLS0tIik7Cglmb3IgKGludCBpID0gMDsgaTwgNjsgKytpKQoJewoJCXByaW50ZigiXG4laVx0XHQlY1x0XHQlcCIsaSwgZmlyc3ROYW1lW2ldLCAmZmlyc3ROYW1lW2ldKTsKCX0gLy8gZm9yCgkKCXByaW50ZigiXG5cblVzaW5nIHRoZSBhcnJheSBuYW1lLCB0aGUgc3RyaW5nIGlzICVzIiwgZmlyc3ROYW1lKTsJCgkKCS8vIHVzZSB0aGUgcG9pbnRlciB0byBwcmludCBqdXN0IHRoZSBTdHJpbmcgYW5kIGluZm8KCXByaW50ZiAoIlxuXG4qKipQcmludCBqdXN0IHRoZSBTdHJpbmcgdXNpbmcgcG9pbnRlcnMqKioiKTsKCXByaW50ZiAoIlxuQXJyYXkiKTsKCXByaW50ZiAoIlxuRWxlbWVudFx0VmFsdWVcdEFkZHJlc3MiKTsKCXByaW50ZiAoIlxuLS0tLS0tLVx0LS0tLS1cdC0tLS0tLS0tLS0tLS0tIik7Cglmb3IgKGludCBpbmRleCA9IDA7ICpjaGFyUHRyICE9ICdcMCc7ICsrY2hhclB0ciwgKytpbmRleCkKCXsKCQlwcmludGYoIlxuJWlcdFx0JWNcdFx0JXAiLGluZGV4LCAqY2hhclB0ciwgY2hhclB0cik7Cgl9IC8vIGZvcgoJCgljaGFyUHRyID0gZmlyc3ROYW1lOyAgLy8gcmVzZXQgcG9pbnRlciB0byBzdGFydCBvZiBhcnJheQoJcHJpbnRmKCJcblxuVXNpbmcgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYXJyYXksIHRoZSBzdHJpbmcgaXMgJXMiLCBjaGFyUHRyKTsKCQoJcmV0dXJuIDA7Cn0K