====== Basic C Pointer Cheat-Sheet ====== #include typedef struct _inf_ { int iMin; int iMax; char sName[41]; } Info; int main( int argc, char *argv[]); int main( int argc, char *argv[]) { int iVal=2; // Regular int, set to 2 int *pVal = &iVal; // Pointer to an int, holds address of iVal char cX='E'; // Regular char (1 byte) set to the character 'E' char *sTmp=0L; // Pointer to a char, address is 0 (null) char sTxt[41]; // Array of 41 chars (block of 41 bytes) sTxt[0] = cX; // First char of sTxt set to value of cX, 'E' sTmp = sTxt; // Pointer sTmp set to address of array sTxt, so // sTmp & sTxt are pointers now holding same address sTmp[1] = '\0'; // Second char of array set to null character cX='d'; // Regular char (1 byte) set to the character 'd' sTmp = &cX; // Pointer sTmp holds address of char cX sTxt[1] = *sTmp; // Second char of sTxt changed to 'd' sTxt[2] = '\0'; // Third char of sTxt set to null character Info aData; // Instance of variable, type is Info (a struct) Info *pData = &aData; // Pointer to an Info, holds address of aData aData.iMin = 0; // aData's iMin field is set to 0 pData->iMax = *pVal; // iMax of instance pData points to (aData) is now 2 // String in sTxt ("Ed") copied into aData's sName strcpy( pData->sName, sTxt); }