指针 相当于 栈一样, 你每设置一个变量,它都会被存在内存的某个地址里,指针就是用来存放地址的
你设置了指针你就可以把数据存入或读出 指针保存的地址 对应内存里面的数据,
写入内存地址:pc = &a;
读出地址内存的数据: *pc
int a;
char *pc;
char *sp;
printf("&a = %p\n",&a);
printf("&pc=%p\n",&pc);
printf("&sp=%p\n",&sp);
像栈一样,高地址在上面,读写也是从下往上。
a = 0x12345678;
pc = (char *)&a;
sp = &a;
printf("a =0x%x\n",a);
printf("sp=%p\n\t",sp);
printf("pc=%p\n\n",pc);
printf("*sp=0x%x\n",*sp);
printf("pc=%p\t",pc); printf("*pc=0x%x\n",*pc);pc=pc+1;
printf("pc=%p\t",pc); printf("*pc=0x%x\n",*pc);pc=pc+1;
printf("pc=%p\t",pc); printf("*pc=0x%x\n",*pc);pc=pc+1;
printf("pc=%p\t",pc); printf("*pc=0x%x\n",*pc);
把a的地址存入pc,sp指针,pc是一一个字节为单位存放,sp是4字节,由下面可知
可见pc,和sp的地址都一样,但都sp的地址却一次就把数据全部读出来了,而pc却用了4次
可见不同的指针存数据的格式是不一样的,是方式一样,都是从首地址开始读,向上读单位个字节,