變量i,值爲1,存放值1的地址爲0x2000
地址:房間, 內容:key
P存放的內容是i的地址,及p - &i
&p:指針p的地址爲0x3000
p的內容,*p,指向地址0x2000裏面的內容,即1
book@100ask:~/C_coding/CH01$ cat pointer.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 1;
int *p;
p = &i;
printf("i = %d\n",i);
printf("&i = %p\n",&i);
printf("p = %p\n",p);
printf("&p = %p\n",&p);
printf("*p = %d\n",*p);
exit(0);
}
book@100ask:~/C_coding/CH01$ make pointer
cc pointer.c -o pointer
book@100ask:~/C_coding/CH01$ ./pointer
i = 1
&i = 0x7ffd9943dbdc
p = 0x7ffd9943dbdc
&p = 0x7ffd9943dbe0
*p = 1
book@100ask:~/C_coding/CH01$ cat pointer2.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 1;
int *p;
p = &i;
printf("%d\n",sizeof(i)); //int型變量佔用4字節
printf("%d\n",sizeof(p)); //指針型變量佔用8字節,由於是64位計算機,因此8字節
printf("i = %d\n",i);
printf("&i = %p\n",&i);
printf("p = %p\n",p);
printf("&p = %p\n",&p);
printf("*p = %d\n",*p);
exit(0);
}
book@100ask:~/C_coding/CH01$ ./pointer2
4
8
i = 1
&i = 0x7ffcb56394fc
p = 0x7ffcb56394fc
&p = 0x7ffcb5639500
*p = 1
book@100ask:~/C_coding/CH01$ cat pointer1.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 1;
int *p;
double *d;
float *q;
char *c;
printf("%d\n",sizeof(p));
printf("%d\n",sizeof(d));
printf("%d\n",sizeof(q));
printf("%d\n",sizeof(c));
}
./pointer1
8
8
8
8
由於是64位計算機,不同類型的指針變量,均佔用8字節