void main()
{
int s[4][2]={ {1234,56},{1212,33},{1434,80},{1312,78} };
int (*p)[2];
int i,j,*pint;
for(i=0;i<=3;i++)
{
p=&s[i];
pint=p;
printf("\n");
for(j=0;j<=1;j++)
printf("%d",*(pint+j));
}
} while running this program it shows a warning-suspicious
pointer conversion ie pint=p; my que is why should we assign
the value of p to pint again.why cant we use it directly as
*(p+j)..but if i use like tat the o/p is garbage value..
Answer Posted / test
p ia pointer to an array when p is incremented it will increment by the number of elements in the array...
for example
int (*p)[2]; //it is aponiter to an arry of 2 elements so when we do p+1 then it will be incremented by two*(sizeof(int))
so leading to the garbage value at the last loop..
can be properly analyzed by the below program
#include<stdio.h>
main()
{
int s[4][2]={ {1234,56},{1212,33},{1434,80},{1312,78} };
int (*p)[2];
int i,j,*pint;
for(i=0;i<=3;i++)
{
p=&s[i];
//pint=p;
printf("\n");
for(j=0;j<=1;j++)
printf("%p.....%d\n",*(p+j),**(p+j));
}
}
| Is This Answer Correct ? | 23 Yes | 2 No |
Post New Answer View All Answers
Tell us something about keyword 'auto'.
Difference between macros and inline functions? Can a function be forced as inline?
What is the difference between printf and scanf )?
Once I have used freopen, how can I get the original stdout (or stdin) back?
What is wrong in this statement? scanf(ā%dā,whatnumber);
If the size of int data type is two bytes, what is the range of signed int data type?
Explain how do you determine whether to use a stream function or a low-level function?
Write a code to achieve inter processor communication (mutual exclusion implementation pseudo code)?
There seem to be a few missing operators ..
What do you mean by keywords in c?
How to write c functions that modify head pointer of a linked list?
What is function prototype in c language?
What are linked lists in c?
What is return type in c?
What are the different data types in C?