在使用指针前,最好先为指针分配内存空间。
计算内存的最小单位是 BYTE,每个BYTE都对应有唯一一个编号。
在32位系统中,每个编号是一个32位的整数。64位系统中,每个编号是占64位。指向NULL的指针为空指针。
野指针:具体没有指向任何变量地址的指针叫野指针。
int * p
*p =1 ; 语法上没错,但是出现了野指针。假设运气好,p可能指向一个程序的有效地址。否则程序将崩溃。
进行相应的语法屏蔽: #pragma warning(disable:4700)
char b ;
int * p = & b ; 也会出错,因为int * 指向的内存有4个字节,而 b所占内存只有一个字节,
打印 *p 时 会后三个字节的值是随机的,所以说会出错。
int a = 0x1310 ;
char b ;
char * p = &b ;
printf("%x",*p); 此时会出现截断。结果将只取第一字节的内容,即10,若用10进制打印,则结果是16.
const int * p 为指向常量的指针。 这个指针只能指向一个常量。即 *p是个只读的值,不能修改。
int * const p 为指针常量。
IP 在网络中传递的时候是一个DWORD即一个int。
IP地址通常看成一个4字节的整数。
例 "192.168.0.1"
int ip = 0 ;
unsigned char * p1 = &ip ;
*p1 = 192;
p1++ ;
*p1 = 168 ;
p1++ ;
*p1 = 0;
p1++;
*p1 = 1 ;
void ip2(int n) //将一个保存ip地址的整数以ip地址的格式打印出来。
{
unsigned char *p = &n ;
printf("%u. %u. %u. %u\n",*p,*(p+1),*(p+2),*(p+3));
}