I am learning C programming and I have a simple question about pointers…
I used the following code to play around with pointers:
#include <stdio.h>
int main (int argc, const char * argv[]) {
int * c;
printf("%x\n",c);
return 0;
}
When I print the value of C, I get back a 0. However, when I print &c (i.e. printf(“&x\n”,&c) I get an address in memory…
Shouldn’t I be getting an address in memory when printing the pointer (i.e. printf(“%x\n”,c)?
— EDIT —
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char * argv[]) {
char * a = malloc(11);
printf("String please\n");
scanf("%s",a);
printf("%s",a);
}
The question is, why does printf(“%s”,a) returns the string instead of the address that is stored in a?
Shouldn’t I use *a to follow the pointer and then print the string?
your current program is not correct. You define variable and do not set value before first use. the initial value is not guranteed for
c, but you are lucky and it is equal to0. It means thatcpoints to nowhere. when you print&cyou print address of variablecitself. So actually both versions print address.