#include <stdio.h> int main() { int a = 0x44332211; int* pa = &a; char* pc = &a; printf("%p\n", pa); printf("%p\n", pc); int c = *pa; printf("%x\n", c); int b = *pc; printf("%x\n", b); return 0;//指針變量的類型,決定了解引用操做的時候,指針可以訪問空間的大小。 } //int* p ;*p可以訪問四個字節 //char* p;*p可以訪問一個字節 //double* p;*p可以訪問八個字節
#include <stdio.h> int main() { int a = 0x44332211; int* pa = &a; char* pc = &a; printf("%p \n", pa); printf("%p \n", pa+1); printf("%p \n", pc); printf("%p \n", pc+1); return 0; } //指針類型決定了:決定了指針走一步走多遠.(指針的步長) //int* p;p+1 -->4 //char* p;p+1-->1 //double* p;p+1-->8
//野指針的造成主要有,
//1.指針未初始化
//2.指針越界訪問,
//3.指針指向的空間釋放
//避免野指針的出現,
//1.指針初始化
//2.當心指針越界,
//3.指針已經失效的時候,想要繼續合法的存在,那就初始化爲NULL
//4.指針使用前檢查有效性,對指針進行判斷,是否爲NULL
//指針的運算,+-整數運算
//關係運算
//指針+-指針數組
int my_strlen(char* str) { char* start = str; char* end = str; for (; *end != '\0';) { end++; } return end - start; ; } #include <stdio.h> int main() printf("%d\n", len); return 0;{ char arr[] = "bit"; int len = my_strlen(arr); }//實現了求字符串長度
容許指向數組元素的指針與指向數組最後一個元素後面的那個內存位置比較,可是不容許與指向第一個元素以前的那個內存位置的指針進行比較。ide
#include <stdio.h> int main() { int a = 0; int* pa = &a; int** ppa = &pa;//ppa就是一個二級指針 //int*** pppa = &ppa; **ppa = 100; printf("%d\n", a); return 0; }
對於二級指針最初步的一個瞭解和認識指針
整形數組就是存放了一組整形,字符型數組就是存放了一組字符型,指針數組能夠用來編輯一個數組,而不用[]標識符。code