"Address of" (&) an array / address of being ignored be gcc?
Posted
by dbarbosa
on Stack Overflow
See other posts from Stack Overflow
or by dbarbosa
Published on 2010-05-23T23:19:45Z
Indexed on
2010/05/23
23:31 UTC
Read the original article
Hit count: 187
Hi, I am a teaching assistant of a introductory programming course, and some students made this type of error:
char name[20];
scanf("%s",&name);
which is not surprising as they are learning... What is surprising is that, besides gcc warning, the code works (at least this part). I have been trying to understand and I wrote the following code:
void foo(int *str1, int *str2) {
if (str1 == str2)
printf("Both pointers are the same\n");
else
printf("They are not the same\n");
}
int main() {
int test[50];
foo(&test, test);
if (&test == test)
printf("Both pointers are the same\n");
else
printf("They are not the same\n");
}
Compiling and executing:
$ gcc test.c -g
test.c: In function ‘main’:
test.c:12: warning: passing argument 1 of ‘foo’ from incompatible pointer type
test.c:13: warning: comparison of distinct pointer types lacks a cast
$ ./a.out
Both pointers are the same
Both pointers are the same
Can anyone explain why they are not different?
I suspect it is because I cannot get the address of an array (as I cannot have & &x
), but in this case the code should not compile.
© Stack Overflow or respective owner