//void,无返回值, 无参数函数修饰
//void a; //err, void是无类型,无法确定真正的类型
void * p; //ok, 指针的大小是固定,和编译器有关
int a = 10;
p = &a;
//间接操作内存:1)首地址 2)长度(步长)
printf("%d\n", *(int *)p);
char ch = 'a';
p = &ch;
printf("%c\n", *(char *)p);
int main()
{
//指针大小是固定的,和编译器有关
printf("%lu, %lu, %lu\n", sizeof(char **), sizeof(int *), sizeof(double *******));
//指针的+1,不一定+1
//指针的步长,+1后,变化的长度,不固定
//由数据类型决定,不是由赋值的内容决定
int * p = NULL; //int *指向int, +1, +sizeof(int) = +4
printf("p: %p, p+1: %p\n", p, p+1);
int ** p2 = NULL; //int ** 指向int *, +sizeof(int *) = +8
printf("p2: %p, p2+1: %p\n", p2, p2+1);
char *p3 = NULL; //char *指向char, +sizeof(char) = +1
return 0;
}