Home »
C++ programming »
C++ find output programs
C++ Structures | Find output programs | Set 2
This section contains the C++ find output programs with their explanations on C++ Structures (set 2).
Submitted by Nidhi, on June 17, 2020
Program 1:
#include <iostream>
using namespace std;
int main()
{
typedef struct
{
int A;
char* STR;
} S;
S ob = { 10, "india" };
S* ptr;
ptr = &ob;
cout << ptr->A << " " << ptr->STR[2];
return 0;
}
Output:
10 d
Explanation:
Here, we created a local structure with two members A and STR that is defined in the main() function. and created the object that is ob, and a pointer ptr, assigned the address of ob to ptr.
cout <<ptr->A<<" "<<ptr->STR[2];
Here, we accessed elements using referential operator "->".
ptr->A will be "10" and ptr->STR[2] will "d", it will access the 2nd element of the string STR.
Program 2:
#include <iostream>
using namespace std;
typedef struct{
int A;
char* STR;
} S;
int main()
{
S ob = { 10, "india" };
cout << sizeof(ob);
return 0;
}
Output:
In a 32-bit system: 8
In a 64-bit system: 16
Explanation:
Here, we created a structure with two members, one is an integer variable and another is a character pointer. We know that size of an integer is 4 bytes / 8 bytes and the size of any type of pointer is also 4 bytes / 8 bytes.
Program 3:
#include <iostream>
using namespace std;
typedef struct{
int A;
int B;
char c1;
char c2;
} S;
int main()
{
cout << sizeof(S);
return 0;
}
Output:
In a 32-bit system: 12
In a 64-bit system: 24
Explanation:
Here, A and B will allocate two blocks of 4 bytes / 8 bytes, and normally character variable takes 1-byte memory space but due to structure padding c1 and c2 will take 1-1 byte and block is padded by remaining 2 bytes / 6 bytes. And then no other variable can use the padded space.
1st block will store A, 2nd block will store B, and 3rd block will store c1, c2, and 2 bytes / 6 bytes space padding.
Then the final size of the structure will be 12 / 24 bytes.