const关键字用于修饰一个变量,即在程序运行期间不能被修改的变量。
当const放在指针变量名之前时,它表示这个指针指向的值是一个常量,不能通过指针来修改这个值。
当const放在指针变量名和星号之间时,它表示这个指针本身的值是一个常量,即一旦指针被初始化后,就不能指向另一个不同的地址。
当const同时放在指针变量名之前和星号之间时,它表示这个指针既不能修改它指向的值,也不能改变它指向的地址。
static关键字修饰一个局部变量,使这个局部变量的动态生存期变成一个静态生存期。
static修饰一个函数时,它限制了这个函数的作用域,使得函数只能在定义它的文件内部被调用。
数组与指针
指针变量既可以指向变量也可以指向数组,所谓数组元素的指针就是数组元素的地址。引用数组元素可以用下标法(a[i])也可以通过指向数组元素的指针找到所需的元素。
定义一个指针指向数组的方法和之前介绍的指向变量的方法相同。
int a[10];
int *p;
p = &a[0];或p = a;
注意数组为int型指针变量的基类型就是int型。
以下是一个数组排序的程序,非常重要,
快速排序,复杂度为n*log(2)n。
字符串与指针
c语言中想要访问一个字符串要用字符数组存放一个字符串,然后输出,现在可以不定义字符数组,而定义一个字符指针,用指针指向字符串中的字符。
指针指向字符串后就可以用指针传递字符串作为参数,
以下是指针传参字符串作为参数的一些常用函数:
动态内存分配
动态内存分配是指在程序运行时请求内存分配的过程。这种内存分配方式允许程序在运行过程中根据需要分配或释放内存资源,而不是在程序开始时就确定内存的大小。动态内存分配主要通过标准库中的 malloc
、calloc
、realloc
和 free
函数来实现。动态内存分配的时堆区的空间。
malloc
函数用于分配指定大小的内存块。它接受一个 size_t
类型的参数,表示要分配的字节数,并返回一个指向分配内存的指针。
free
函数用于释放之前使用 malloc
分配的内存块。
realloc
函数用于调整之前使用 malloc
或 calloc
分配的内存块的大小。
使用动态内存分配时,需要注意以下几个要点:
内存泄漏:如果分配的内存没有被正确释放,将导致内存泄漏。
野指针:使用未初始化或已释放的内存指针可能导致未定义行为。