#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