Program
#include <stdio.h>
void printarr(int a[]);
void printdetail(int a[]);
main()
{
int a[5];
for(int i = 0;i<5;i++)
{
a[i]=i;
}
printdetail(a);
}
void printarr(int a[])
{
for(int i = 0;i<5;i++)
{
printf("value in array %d\n",a[i]);
}
}
void printdetail(int a[])
{
for(int i = 0;i<5;i++)
{
printf("value in array %d and address is %8u\n",a[i],&a[i]);
}
}
void print_usingptr(int a[]) \\ A
{
int *b; \\ B
b=a; \\ C
for(int i = 0;i<5;i++)
{
printf("value in array %d and address is %16lu\n",*b,b); \\ D
b=b+2; \\E
}
}
Explanation
- The function print_using pointer given at statement A accesses elements of the array using pointers.
- Statement B defines variable b as a pointer to an integer.
- Statement C assigns the base address of the array to b, thus the array's first location (a[0]) is at 100; then b will get the value 100. Other elements of the array will add 102,104, etc.
- Statement D prints two values: *b means the value at the location specified by b, that is, the value at the location 100. The second value is the address itself, that is, the value of b or the address of the first location.
- For each iteration, b is incremented by 2 so it will point to the next array location. It is incremented by 2 because each integer occupies 2 bytes. If the array is long then you may increment it by 4.
Program
#include <stdio.h>
void printarr(int a[]);
void printdetail(int a[]);
main()
{
int a[5];
for(int i = 0;i<5;i++)
{
a[i]=i;
}
printdetail(a);
}
void printarr(int a[])
{
for(int i = 0;i<5;i++)
{
printf("value in array %d\n",a[i]);
}
}
void printdetail(int a[])
{
for(int i = 0;i<5;i++)
{
printf("value in array %d and address is %8u\n",a[i],&a[i]);
}
}
void print_usingptr(int a[]) \\ A
{
int *b; \\ B
b=a; \\ C
for(int i = 0;i<5;i++)
{
printf("value in array %d and address is %16lu\n",*b,b); \\ D
b=b+2; \\E
}
}
Explanation
- The function print_using pointer given at statement A accesses elements of the array using pointers.
- Statement B defines variable b as a pointer to an integer.
- Statement C assigns the base address of the array to b, thus the array's first location (a[0]) is at 100; then b will get the value 100. Other elements of the array will add 102,104, etc.
- Statement D prints two values: *b means the value at the location specified by b, that is, the value at the location 100. The second value is the address itself, that is, the value of b or the address of the first location.
- For each iteration, b is incremented by 2 so it will point to the next array location. It is incremented by 2 because each integer occupies 2 bytes. If the array is long then you may increment it by 4.
No comments:
Post a Comment