指針 專題



1、如何避免野指針

將指針初始化爲NULL,用完後也將其賦值爲NULL。

2、什麼是大小端模式?請用C語言寫出判斷函數。

大端模式:內存低地址存放 數據的高字節
小端模式:內存低地址存放 數據的低字節
比如:將一個32位的整數0x12345678存放到一個整型變量(int)中,
大端:12-34-56-78; 小端:78-56-34-12

#include <stdio.h>
void main()
{
	int x = 1;
	char *p = (char *)&x;
	if (*p)	printf("Little-endian \n");	//x86機器運行時打印
	else 	printf("Big-endian \n");
}

3、指針的強制類型轉換
#include <stdio.h>
int main()
{
	unsigned int a = 0x11223344;		//x86是小端模式,按照內存地址遞增存儲 44-33-22-11
	unsigned char i = (unsigned char)a;

	char *b = (char *)&a;			//強制類型轉換, 影響的只是指針的尋址(偏移)
	unsigned int *c = &a;

	printf("i= %x, *b = %x\n\n", i, *b);	//0x44, 0x44
	printf("&a= %08x\n\nb = %08x\n", &a, b);//00affe30, 00affe30
	b++;
	printf("b = %08x\n", b);	//00affe31(內存地址+1)
	printf("*b = %x\n\n", *b);	//0x33

	printf("c = %08x\n", c);	//00affe30(跟&a相等)
	c++;
	printf("c = %08x\n", c);	//00affe34(內存地址+4)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章