还剩1页未读,继续阅读
文本内容:
2023年c语言作业实验心得指针是C语言的精华,也是C语言的难点,它就像一把双刃剑,锋利无比但运用的不好也会给自己带来危害,后果比较严重,所以重点来说说指针很多初学者弄不清指针和数组到底有什么样的关系,为避免混淆不清,下面总结一下指针和数组的特性指针是保存数据的地址,任何存入指针变量的数据都会被当作地址来处理,指针变量本身的地址由编译器另外存储,存储在哪里,我们并不知道,间接访问数据,首先取得指针变量的内容,把它作为地址,然后从这个地址读或写入数据指针可以用间接访问操作符X访问,也可以用以下标的形式访问,指针一般用于动态数据结构数组是用来保存数据的,数组名代表的是数组首元素的地址而不是数组的首地址,所以数组p与P是有区别的,虽然内容相同,但意义却不同,p才是整个数组的首地址,数组名是整个数组的名字,数组内每个元素并没有名字,不能把数组当一个整体来进行读写操作当然数组在初始化时也有例外如intp[]=12345”是合法的数组可以以指针的形式访问如Xp+i;也可以以下标的形式访问p[i]但其本质都是P所代表的数组首元素的地址加上iXsizeof(类型)个字节作为数据的真正地址来进行访问的数组通常用于存储固定数目且数据类型相同的元素刚开始的时候我有点分不清指针数组和数组指针,现在也总结一下,指针数组,首先它是一个数组,数组的每个元素都是指针,可以理解为“存储指针的数组”的简称,数组指针,首先它是一个指针,它指向一个数组,在32位系统下永远只占4个字节,至于它指向的数组有多少个字节,并不知道,可以理解为“指向数组的指针:举个例子,intXpl
[10]与int(Xp2)
[10]要理解这个问题,首先要清楚操作符的优先级,“口”的优先级比“X”的优先级高,所以首先pl与“
[10]”结合构成一个数组pl
[10]intX为修饰数组的内容,所以数组元素是指向int类型的指针,所以这个是指针数组,“()”的优先级比的优先级高,“X”与p2结合构成一个指针变量,int修饰数组的内容,即数组的每个元素,数组这里并没有名字,是个匿名数组,现在清楚了p2是一个指针,它指向一个包含10个int类型数据的数组,即为数组指针下面再说说内存管理,内存分为三个部分静态区、堆、栈其实堆栈就是栈,而不是堆静态区是保存自动全局变量和static变量静态区的内容在整个程序的生命周期内都存在,由编译器在编译的时候分配堆是由malloc系统函数分配内存的其生命周期由free和delete决定栈保存局部变量栈上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁再说说有关内存需要注意的地方,定义了指针变量,在使用之前一定要初始化使它指向一块合法的内存,不管什么时候,我们在使用指针之前一定要确保指针是有效的使用malloc系列函数分配内存,使用完之后应及时释放内存,以防止内存泄露最后总结的说一下学习c语言的方法就是编程编程再编程,理论学习与上机操作同时进行,另外在编程序的过程中要养成良好的编程习惯。