野指针,指向常量的指针,指针常量

来源:互联网 发布:淘宝卖家用什么app 编辑:程序博客网 时间:2024/06/03 12:30

在使用指针前,最好先为指针分配内存空间。

计算内存的最小单位是 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));}