C语言指针学习经验总结 学习
指针是C语言的难点和重点,但指针也是C语言的灵魂 。这篇C语言指针学习经验总结主要是我入职以来学习C指针过程当中的点滴记录。文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较费解的东西作一下讲解,但愿能达到如下三个目的 spa
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针须要搞清指针的四方面的内容: 指针
先声明几个指针放着作例子: 内存
例一: 文档
(1)int *ptr; 编译器
(2)char *ptr; 编译
(3)int **ptr; 变量
(4)int (*ptr)[3]; 语法
(5)int *(*ptr)[4]; 方法
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针自己所具备的类型。因此分析下例一中各个指针的类型:
(1)int *ptr; //指针的类型是int *
(2)char *ptr; //指针的类型是char *
(3)int **ptr; //指针的类型是 int **
(4)int (*ptr)[3]; //指针的类型是 int(*)[3]
(5)int *(*ptr)[4]; //指针的类型是 int *(*)[4]
因此找出指针的类型的方法是否是很简单?
当你经过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当作什么来看待。从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符 *去掉,剩下的就是指针所指向的类型。例如:
(1)int *ptr; //指针所指向的类型是int
(2)char *ptr; //指针所指向的的类型是char
(3)int **ptr; //指针所指向的的类型是 int *
(4)int (*ptr)[3]; //指针所指向的的类型是 int()[3]
(5)int *(*ptr)[4]; //指针所指向的的类型是 int *()[4]
在指针的算术运算中,指针所指向的类型有很大的做用。
指针的类型(即指针自己的类型)和指针所指向的类型是两个概念。当对C愈来愈熟悉时,你会发现,把与指针搅和在一块儿的“类型”这个概念分红“指针的 类型”和“指针所指向的类型”两个概念,是精通指针的关键点之一。有些教材书上写得不好,就把指针的这两个概念搅在一块儿了,因此看起书来先后矛盾,越看越糊涂。
点击原文连接查看所有>>