#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 ("\nType\t\tByte 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\nVariable\t\t\tBytes\tValue\t\t\tStart 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 ("\nElement\tValue\tAddress"); 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\nUsing 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 ("\nElement\tValue\tAddress"); 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\nUsing a pointer to the start of the array, the string is %s", charPtr
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBhIHN0cnVjdHVyZSB0byBob2xkIHRoZSBlbXBsb3llZSBpbmZvCnN0cnVjdCBlbXBsb3llZSB7ICAgIAogICAgbG9uZyBpbnQgY2xvY2tOdW07CiAgICBmbG9hdCB3YWdlUmF0ZTsKICAgIGZsb2F0IGhvdXJzOwp9OwoKaW50IG1haW4odm9pZCkgewoKICAgIGZsb2F0ICogZmxvYXRQdHI7ICAgLy8gcG9pbnRlciB0byBhIGZsb2F0aW5nIHBvaW50IHZhcmlhYmxlCiAgICBmbG9hdCB3YWdlUmF0ZTsgICAgIC8vIGhvdXJseSB3YWdlIHJhdGUgZm9yIGVtcGxveWVlCgogICAgZmxvYXRQdHIgPSAmd2FnZVJhdGU7ICAgLy8gc2V0IHBvaW50ZXIgdG8gYWRkcmVzcyBvZiBXYWdlUmF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogIFRoZSBjb250ZW50cyBvZiBhIHBvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyaWFibGUgaXMgYW4gYWRkcmVzcwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICpmbG9hdFB0ciA9IDEwLjYwOyAgICAgLy8gc2V0IHdhZ2VSYXRlIGluZGlyZWN0bHkgd2l0aCBhIHBvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3IKICAgIHdhZ2VSYXRlID0gMTAuNjA7ICAgICAgLy8gc2V0IHdhZ2VSYXRlIGRpcmVjdGx5IHZpYSB2YXJpYWJsZSBuYW1lCiAgICAKICAgIGludCBjbG9ja051bTsgICAgICAgICAgLy8gIHVuaXF1ZSBJRCBmb3IgYW4gZW1wbG95ZWUKICAgIGludCAqIGludFB0cjsgICAgICAgICAgLy8gcG9pbnRlciB0byBhbiBpbnRlZ2VyIHZhcmlhYmxlCgogICAgaW50UHRyID0gJmNsb2NrTnVtOyAgICAvLyBzZXQgaW50UHRyIHRvIHBvaW50IHRvIGNsb2NrTnVtCgogICAgKmludFB0ciA9IDk4NDAxOyAgICAgICAvLyBzZXQgY2xvY2tOdW0gdXNpbmcgdGhlIHBvaW50ZXIKCiAgICBjaGFyIGZpcnN0TmFtZSBbNl0gPSB7IlRpbSJ9OyAvLyBjaGFyIGFycmF5IHdpdGggYSBzdHJpbmcKICAgIGNoYXIgKiBjaGFyUHRyOyAgICAgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gYSBjaGFyYWN0ZXIKCiAgICBjaGFyUHRyID0gZmlyc3ROYW1lOyAgIC8vIHNldCBwb2ludGVyIHRvIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDigKYgc2FtZSBhcyBzZXR0aW5nIGl0IHRvOiAgJmZpcnN0TmFtZVswXQogICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgY2hhclB0ciBjYW4gcG9pbnQgdG8gYW55IGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpbiBmaXJzdE5hbWUgc2luY2UgZWFjaCBpcyBhIGNoYXIgdHlwZQogICAgICAgICAgICAgICAgICAgICAgIAogICAgc3RydWN0IGVtcGxveWVlIG15RW1wOyAgICAgICAvLyBzdHJ1Y3R1cmUgdmFyaWFibGUgdG8gaG9sZCBlbXBsb3llZQogICAgc3RydWN0IGVtcGxveWVlICogZW1wUHRyOyAgICAvLyBwb2ludGVyIHRvIHN0cnVjdHVyZSBvZiB0aGF0IHR5cGUKCiAgICBlbXBQdHIgPSAmbXlFbXA7ICAgICAgICAgICAgIC8vIHNldCBlbXBQdHIgdG8gcG9pbnQgdG8gdGhlIHN0cnVjdHVyZQoKICAgIG15RW1wLmNsb2NrTnVtID0gOTg0MDE7ICAgICAgLy8gc2V0IHRoaXMgbWVtYmVyIGRpcmVjdGx5CgogICAgKCplbXBQdHIpLndhZ2VSYXRlID0gMTAuNjA7ICAvLyB1c2UgdGhlIHBvaW50ZXIgdG8gc2V0IHRoaXMgbWVtYmVyCgogICAgZW1wUHRyLT5ob3VycyA9IDUxLjA7ICAgICAgICAvLyB1c2Ugc2hvcnQgaGFuZCBub3RhdGlvbiB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb2ludGVyIHRvIHNldCB0aGlzIG1lbWJlcgoJCglwcmludGYgKCJcblR5cGVcdFx0Qnl0ZSBTaXplIik7CiAgICBwcmludGYgKCJcbi0tLS0tLS0tLS1cdC0tLS0tLS0tLSIpOwoJcHJpbnRmICgiXG4lLTEwLjEwcyAgJWkiLCAiaW50Iiwgc2l6ZW9mKGludCkpOwoJcHJpbnRmICgiXG4lLTEwLjEwcyAgJWkiLCAibG9uZyBpbnQiLCBzaXplb2YobG9uZyBpbnQpKTsKCXByaW50ZiAoIlxuJS0xMC4xMHMgICVpIiwgImZsb2F0Iiwgc2l6ZW9mKGZsb2F0KSk7CglwcmludGYgKCJcbiUtMTAuMTBzICAlaSIsICJkb3VibGUiLCBzaXplb2YoZG91YmxlKSk7CiAgICBwcmludGYgKCJcbiUtMTAuMTBzICAlaSIsICJjaGFyIiwgc2l6ZW9mKGNoYXIpKTsKCQoJCglwcmludGYgKCJcblxuXG5WYXJpYWJsZVx0XHRcdEJ5dGVzXHRWYWx1ZVx0XHRcdFN0YXJ0IEFkZHJlc3MiKTsKICAgIHByaW50ZiAoIlxuLS0tLS0tLS1cdFx0XHQtLS0tLVx0LS0tLS0tLS0tLS0tLS1cdC0tLS0tLS0tLS0tLS0tIik7CglwcmludGYgKCJcbiUtMjAuMjBzJWlcdFx0JTZpXHRcdFx0JXAiLCAgImNsb2NrTnVtIiwgc2l6ZW9mKGludCksIGNsb2NrTnVtLCAmY2xvY2tOdW0pOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCVwXHQlcCIsICJpbnRQdHIiLCBzaXplb2YoaW50ICopLCBpbnRQdHIsICZpbnRQdHIpOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCU1LjJmXHRcdFx0JXAiLCAid2FnZVJhdGUiLCBzaXplb2YoZmxvYXQpLCB3YWdlUmF0ZSwgJndhZ2VSYXRlKTsKCXByaW50ZiAoIlxuJS0yMC4yMHMlaVx0XHQlcFx0JXAiLCAiZmxvYXRQdHIiLCBzaXplb2YoZmxvYXQgKiksIGZsb2F0UHRyLCAmZmxvYXRQdHIpOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCVwXHQlcCIsICJjaGFyUHRyIiwgc2l6ZW9mKGNoYXIgKiksIGNoYXJQdHIsICZjaGFyUHRyKTsJCiAgICBwcmludGYgKCJcbiUtMjAuMjBzJWlcdFx0JTZpXHRcdFx0JXAiLCAgIm15RW1wIiwgc2l6ZW9mKHN0cnVjdCBlbXBsb3llZSksIG15RW1wLCAmbXlFbXApOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCVwXHQlcCIsICJlbXBQdHIiLCBzaXplb2Yoc3RydWN0IGVtcGxveWVlICopLCBlbXBQdHIsICZlbXBQdHIpOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCU2aVx0XHRcdCVwIiwgImVtcFB0ci0+Y2xvY2tOdW0iLCBzaXplb2YobG9uZyBpbnQpLCBlbXBQdHItPmNsb2NrTnVtLCAmZW1wUHRyLT5jbG9ja051bSk7CglwcmludGYgKCJcbiUtMjAuMjBzJWlcdFx0JTUuMmZcdFx0XHQlcCIsICJlbXBQdHItPndhZ2VSYXRlIiwgc2l6ZW9mKGZsb2F0KSwgZW1wUHRyLT53YWdlUmF0ZSwgJmVtcFB0ci0+d2FnZVJhdGUpOwoJcHJpbnRmICgiXG4lLTIwLjIwcyVpXHRcdCU1LjFmXHRcdFx0JXAiLCAiZW1wUHRyLT5ob3VycyIsIHNpemVvZihmbG9hdCksIGVtcFB0ci0+aG91cnMsICZlbXBQdHItPmhvdXJzKTsJCgoJLy8gdXNlIGFycmF5IGluZGV4CglwcmludGYgKCJcblxuKioqUHJpbnQgdXNpbmcgdGhlIGFycmF5IGluZGV4ZXMqKioiKTsKCXByaW50ZiAoIlxuQXJyYXkiKTsKCXByaW50ZiAoIlxuRWxlbWVudFx0VmFsdWVcdEFkZHJlc3MiKTsKCXByaW50ZiAoIlxuLS0tLS0tLVx0LS0tLS1cdC0tLS0tLS0tLS0tLS0tIik7Cglmb3IgKGludCBpID0gMDsgaTwgNjsgKytpKQoJewoJCXByaW50ZigiXG4laVx0XHQlY1x0XHQlcCIsaSwgZmlyc3ROYW1lW2ldLCAmZmlyc3ROYW1lW2ldKTsKCX0gLy8gZm9yCgkKCXByaW50ZigiXG5cblVzaW5nIHRoZSBhcnJheSBuYW1lLCB0aGUgc3RyaW5nIGlzICVzIiwgZmlyc3ROYW1lKTsJCgkKCS8vIHVzZSB0aGUgcG9pbnRlciB0byBwcmludCBqdXN0IHRoZSBTdHJpbmcgYW5kIGluZm8KCXByaW50ZiAoIlxuXG4qKipQcmludCBqdXN0IHRoZSBTdHJpbmcgdXNpbmcgcG9pbnRlcnMqKioiKTsKCXByaW50ZiAoIlxuQXJyYXkiKTsKCXByaW50ZiAoIlxuRWxlbWVudFx0VmFsdWVcdEFkZHJlc3MiKTsKCXByaW50ZiAoIlxuLS0tLS0tLVx0LS0tLS1cdC0tLS0tLS0tLS0tLS0tIik7Cglmb3IgKGludCBpbmRleCA9IDA7ICpjaGFyUHRyICE9ICdcMCc7ICsrY2hhclB0ciwgKytpbmRleCkKCXsKCQlwcmludGYoIlxuJWlcdFx0JWNcdFx0JXAiLGluZGV4LCAqY2hhclB0ciwgY2hhclB0cik7Cgl9IC8vIGZvcgoJCgljaGFyUHRyID0gZmlyc3ROYW1lOyAgLy8gcmVzZXQgcG9pbnRlciB0byBzdGFydCBvZiBhcnJheQoJcHJpbnRmKCJcblxuVXNpbmcgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYXJyYXksIHRoZSBzdHJpbmcgaXMgJXMiLCBjaGFyUHRyKTsKCQoJcmV0dXJuIDA7Cn0K