指针(补充)
首先明白:
一个字节=一个内存单元=一个内存地址=一个地址单元=一个存储单元
都是一个意思。
定义一个指针之后,如果不进行初始化,指针是不能够使用的,因为此时指针的指向是不确定的(野指针),操作指向不确定的指针很可能会引发问题。所以尽可能等定义了对象之后,再定义指向它的指针,确保指针初始化。
用函数free()释放指针是向操作系统声明操作系统可以重新分配指针指向的这块内存,但此次指针的指向并没有改变,所以释放指针之后再进行读写操作非常危险。指针被释放多次也会引起程序崩溃。
一般,
地址+1,表示跳过一个字节的内存空间。
printf("addr+1=%p\n",0x1000000d+1);
编译输出:
addr+1=0x1000000e
指针变量+1表示跳过该指针变量对应基类型所占字节数大小的空间。
int a=0;
//int *p = &a; //直接用&a代替指针变量p
printf("a_addr=%p\n",&a);
printf("&a+1=%p\n",&a+1);
printf("&a+2=%p\n",&a+2);
编译输出:
a_addr=0x7ffd5a11020c
&a+1=0x7ffd5a110210
&a+2=0x7ffd5a110214
理解指针地址(程序)https://blog.csdn.net/ssc_zcys/article/details/105875616