C语言指针详解(一)
指针是什么
指针就是变量,真有内存空间,用来保存内存地址。
指针指向某个变量,就是把某个变量地址赋给指针。
指针和内存
C语言在编译之后,会以三种形式使用内存
静态/全局内存
静态声明的变量分配在这里,全局变量也使用这部分内存。这些变量在程序开始运行时分配,知道程序终止才消失。所有函数都能访问全局变量,静态变量的作用域则局限在定义它们的函数内部。
自动内存
这些变量在函数内部声明,并且在函数调用时才创建。它们的作用域在函数内部,并且生命周期限制在函数的执行时间内。
动态内存
内存分配在堆上,可以根据需要释放,并且直到释放才消失。指针引用分配的内存,作用域局限于应用内存的指针。
作用域 | 生命周期 | |
---|---|---|
全局内存 | 整个文件 | 应用程序的生命周期 |
静态内存 | 声明它的函数内部 | 应用程序的生命周期 |
自动内存(局部内存) | 声明它的函数内部 | 限制在函数的执行时间内 |
动态内存 | 由引用内存的指针决定 | 知道内存释放 |
指针变量包含内存中别的变量、对象或函数的地址。对象就是内存分配函数(如malloc分配的函数)
指针的使用
尽管不经过初始化就可以使用指针,但只有初始化后,指针才会正常工作。