//指针是什么?指针是变量,存放内存单元的地址 //一个内存多大?1个字节 //如何编制?机器通电...32根地址线4个字节 64根地址线8个字节 #include <stdio.h> int *test(); int main() { //1.指针类型的大小 printf("%d", sizeof(char*));//8 printf("%d", sizeof(short *));//8 printf("%d", sizeof(int*));//8 printf("%d", sizeof(double*));//8 // //通过以上的指针变量的结果,我们是不是说这个指针变量用哪个都行,或者说没有意思? // //指针大小决定指针进行解引用操作的类型,能够访问空间大小,例如: // //int* p; *p能够访问4个字节 // //char* p; *p能够访问1个字节 // //double* p; *p能够访问8个字节 // //目的:选择合适类型(空间大小) // int a = 0x11223344; // int* pa = &a; // int* pc = &a; // printf("%p ",pa); // printf("%p ",pa+1); // // printf("%p ",pc); // printf("%p",pc+1); // // //指针类型决定了:指针走一步走多远(指针步长)单位:字节 // //int* p;p+1 --》4 // //char* p;p+1 --》1 // //double* p;p+1 --》8 //2.数组指针 // int arr[10] = {0}; // int* p = arr; // int i; // for (i = 0; i < 10 ; ++i) // { // *(p+i) = 1; // } //3.野指针 //3.1指针未初始化 // int* p;//局部变量不初始化,里边默认的是一个随机值 // *p = 20; // return 0; //3.2指针越界 // int arr[10] = {0}; // int* p = arr; // for (int i = 0; i < 12; ++i) // { // //*(p++) = i;// *p++:解引用操作符后++ // *p = i; // p++; // } // return 0; // //3.3子函数返回局部变量 // int* p = test(); // printf("%d",*p); // return 0; } int *test() { int a = 10;//调用完后销毁 return &a; }
01-26
11万+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-20
1093
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-29
493
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)