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)
}