<< Chapter < Page | Chapter >> Page > |
A string may be assigned in a declaration to either a character array or a variable of type char *. The declarations
char color[] = “blue”;
char* colorPtr = “blue”;
each initialize a variable to the string “blue”. The first declaration creates a 5-element array color containing the characters ‘b’, ‘l’, ‘u’, ‘e’ and ‘\0’. The second declaration creates pointer variable colorPtr that points to the string “blue” somewhere in the memory.
The first declaration determines the size of the array automatically based on the number of initializers provided in the initializer list.
Example
/* Printing a string one character at a time using a non-constant pointer to constant data */
#include<iostream.h>
int main( )
{
char strng[] = “Adams”;
char *sPtr;
sPtr =&strng[0];
cout<<“\nThe string is: \n”;
for( ; *sPtr != ‘\0’; sPtr++)
cout<<*sPtr<<‘ ‘;
return 0;
}
The output of the above program:
The string is:
A d a m s
Note: The name of a string by itself is equivalent to the base address of that string.
Complete copies of all members of a structure can be passed to a function by including the name of the structure as an argument to the called function.
Example
#include<iostream.h>
struct Employee // declare a global type
{
int idNum;
double payRate;
double hours;
};
double calcNet(Employee); // function prototype
int main()
{
Employee emp = {6782, 8.93, 40.5};
double netPay;
netPay = calcNet(emp); // pass by value
cout<<"The net pay for employee "
<<emp.idNum<<" is $"<<netPay<<endl;
return 0;
}
double calcNet(Employee temp) // temp is of data
// type Employee
{
return (temp.payRate * temp.hours);
}
The output is:
The net pay for employee 6782 is $361.665
In the above program, the function call
calcNet(emp);
passes a copy of the complete emp structure to the function calcNet( ). The parameter passing mechanism here is call-by-value.
An alternative to the pass-by-value function call, we can pass a structure by passing a pointer . The following example shows how to pass a structure by passing a pointer.
Example
#include<iostream.h>
struct Employee // declare a global type
{
int idNum;
double payRate;
double hours;
};
double calcNet(Employee *); //function prototype
int main()
{
Employee emp = {6782, 8.93, 40.5};
double netPay;
netPay = calcNet(&emp); // pass an address
cout<<"The net pay for employee "
<<emp.idNum<<" is $"<<netPay<<endl;
return 0;
}
double calcNet(Employee* pt) //pt is a pointer
{ //to a structure of Employee type
return (pt->payRate * pt->hours);
}
The output is:
The net pay for employee 6782 is $361.665
The typedef declaration statement permits us to construct alternate names for an existing C++ data type name. The syntax of a typedef statement is:
typedef data-type new-type-name
For example, the statement:
typedef float REAL;
make the name REAL a synonym for float. The name REAL can now be used in place of the term float anywhere in the program after the synonym has been declared.
The definition
REAL val;
is equivalent to
float val;
Example: Consider the following statement:
typedef struct
{
char name[20];
int idNum;
} EMPREC;
The declaration
EMPREC employee[75];
is equivalent to
struct
{
char name[20];
int idNum;
} employee[75];
Example: Consider the following statement:
typedef double* DPTR;
The declaration:
DPTR pointer1;
is equivalent to
double* pointer1;
Notification Switch
Would you like to follow the 'Programming fundamentals in c++' conversation and receive update notifications?