Int *temp[5]; this is pointer array that each element of array stores pointer.
Int (*temp)[5]; this is integer array but temp is pointer and this point to integer array not pointer array.
Wednesday, December 26, 2007, 8:07:07 AM, you wrote:
> |
Can u tel me the difference between Int *temp[5]; And Int (*temp)[5];
Thanks & Regards, Saquib Imam From: kernelnewbies-bounce@xxxxxxxxxxxx [mailto:kernelnewbies-bounce@xxxxxxxxxxxx] On Behalf Of sahlot arvind Sent: Wednesday, December 26, 2007 10:34 AM To: Saquib Imam Cc: Cihan Kömeçoğlu; C_C_Kuo@xxxxxxxxxxxxxx; kernelnewbies@xxxxxxxxxxxx Subject: Re: Question about double pointers assignment
>#include<stdio.h> >#include<stdlib.h> >int exterint[5][5]; >int exterint1[5]; >int main(void){ >int index0, index1; >int **temp1; >int *temp2; >temp2=exterint1; //***** >temp1 = exterint; //xxxxxxxxx >The compiler will warn me that at line marked as xxxxx is "assignment from incompatible pointer type." > But "******" doesn't get any warning. Here exterint1 is a pointer to the first element of one dimensional array, which is nothing but an integer. Thus "exterint1" is nothing but simply a pointer to an integer. Thats why you can assign it "temp2" which is also a pointer of same type. But keeping in mind the way two dimensional arrays are treated, "exterint" is a pointer to an array of integers of size 5. Note that it is not a pointer to pointer to an integer, while "temp1" is a pointer to pointer to integer. Thus when in "temp1 = exterint" the assignment is not correct and hence warning. To remove it what you can do it, declare "temp1" as a pointer to an array of integer of size 5. Something like this -
int (*temp1)[5]; temp1 = externint;
Hope it helps.
Best regards Arvind Sahlot
On 12/26/07, Saquib Imam <saquib.imam@xxxxxxxxx> wrote: ⤦ int exterint[5][5]; int exterint1[5]; ⤦ int **temp1; int *temp2; ⤦. temp2=exterint1; //***** temp1 = exterint; //xxxxxxxxx "ERROR GIVING LINE"
In the above case exterint1 will be pointing to the first element of the integer array, so it can be assigned to a integer pointer.
So the assignment temp2=exterint1; is correct.
While in case of exterint , it will be pointing to the first element to the first row , again its pointing to a integer not a pointer to the integer while temp1 is a pointer to the pointer to an integer.
So the assignment temp1 = exterint gives an error. Thanks & Regards, Saquib Imam From: kernelnewbies-bounce@xxxxxxxxxxxx [mailto: kernelnewbies-bounce@xxxxxxxxxxxx] On Behalf Of Cihan Kömeçoglu Sent: Monday, December 24, 2007 4:26 PM Cc: kernelnewbies@xxxxxxxxxxxx Subject: Re: Question about double pointers assignment
I think , the problem is there
temp1 = exterint
temp1 is pointer to pointer,not pointer to int but you assigned adress of exterint1 and this array of integer; not array of pointer. For example like this give you same warning:
int * temp1; int a; temp1 = a; Warrning:"assignment from incompatible pointer type
This is correct if you do like below
int *temp1 int exterint[5];
temp1 = exterint;
Monday, December 24, 2007, 11:49:37 AM, you wrote:
-- -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ
|
--
Cihan Kömeçoğlu,
EnderUNIX SDT mailto:cihan@xxxxxxxxxxxxx
-- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ