C语言指针学习指南:类型、值和内存管理

1 下载量 93 浏览量 更新于2024-08-27 收藏 107KB PDF 举报
指针学习指南 指针是C语言中一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。 一、指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。 二、指针的类型 指针的类型是指针本身所具有的类型。从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。例如: * int*ptr;//指针的类型是int* * char*ptr;//指针的类型是char* * int**ptr;//指针的类型是int** * int(*ptr)[3];//指针的类型是int(*)[3] * int*(*ptr)[4];//指针的类型是int*(*)[4] 三、指针所指向的类型 指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如: * int*ptr;//指针所指向的类型是int * char*ptr;//指针所指向的的类型是char * int**ptr;//指针所指向的的类型是int* * int(*ptr)[3];//指针所指向的的类型是int()[3] * int*(*ptr)[4];//指针所指向的的类型是int*()[4] 四、指针的值 指针的值是指针所指向的内存区的地址。例如: * int x = 10; * int*ptr = &x; * printf("%p", ptr);//输出的是x的地址 五、指针的应用 指针在C语言中有广泛的应用,例如: * 数组的应用:数组名可以作为指针来使用。 * 字符串的应用:字符串可以看作是一个字符数组,字符串名可以作为指针来使用。 * 结构体的应用:结构体的成员可以作为指针来使用。 六、指针的注意事项 * 野指针:未初始化的指针。 * 空指针:指针的值为NULL。 *悬空指针:指针所指向的内存区已经释放了,但是指针的值仍然保留着那个内存区的地址。 七、结论 指针是C语言中一个非常重要的概念,搞清指针的四方面的内容是精通指针的关键点之一。只有搞清指针的类型、指针所指向的类型、指针的值和指针本身所占据的内存区,才能更好地应用指针,写出高效、稳定的程序。