一、指针的概念
在计算机中,所有数据都是放在内存中的,为了能够正确地访问到这写内存单元,在C语言中为了每个内存单元编上号。通过这些唯一的编号,就可以找到所需的内存单元,那么 这个内存单元的编号就称之为内存单元的地址,这个地址就是指针
在c语言中,指针类型是最重要的数据类型,也是c语言醉主要的风格之一。利用指针变量可以访问数据结构,可以很方便地使用数组和字符串;并能像汇编语言一样处理内存地址。
指针变量是包含内存地址的变量。通常的变量是包含一个值。而指针变量是某一个数据类型的内存地址。
二、指针
1、声明的形式
数据类型 *变量名
2、代码段
#include<stdio.h>
main(){
int *pint,n=61;
pint = &n;
*pint =*pint-1;
printf("%d",n);
}
在上述代码中,*pint间接引用变量n,将n值所在的内存地址赋给pint指针变量,然后通过*间接运算法访问指针变量pint所指向的内存单元的值,即n的值,因此改变*pint的值实际上是改变了n的值
三、内存管理
1.动态内存
内存泄露:将内存分配后没有释放,导致内存不够的现象
内存耗尽:分配了过多的内存没有及时释放
2.静态内存
在程序运行时由编译器分配的内存;程序中的各种变量,在编译源程序时就已经为其分配了所需的内存空间,当该变量在作用域内使用完毕时,系统就会自动释放所占用的内存空间。
3.动态内存和静态内存的区别
(1)静态内存的分配是在程序开始编译时完成的,不占用cpu资源;而动态内存的分配是在程序运行时完成的,动态的分配与释放都是占用cpu资源的
(2)静态内存是在栈上分配的;而动态内存是在堆上分配的
(3)动态内存分配需要指针和引用数据类型的支持,而静态内存不需要
(4)静态内存分配是在编译qian5就已经确定了内存快的大小,属于按计划分配内存;而动态内存的分配是在程序运行过程中,根据需要随时分配的,属于按需分配
(5)静态内存的控制权的交给编译器的,而动态内存的控制权是由程序员决定的