深入了解C语言中的const和指针
概述
在C语言中,const
和指针是两个比较常用的概念。本篇攻略将会深入讲解const
和指针的相关知识,希望读者可以从中收获一些有用的知识。
const
const 的定义
const
是C语言中一个关键字,用来修饰一个变量,表示该变量是不可修改的。常见的用法如下:
const int n = 10;
上述代码中,n
是一个整型常量,其值为10。由于使用了const
关键字,因此这个变量是不能修改的。
const 的原理
C语言中,const
可以保证变量的值在定义后不能被修改。其实现原理是内存中分配一块只读的空间,将变量的值存储在这块空间中。一旦程序试图修改这个变量的值,就会导致程序崩溃。
const 和指针
在C语言中,const
和指针也经常一起使用。在指针类型名称前添加const
关键字可以定义一个指向常量的指针,表示该指针所指向的值是不可修改的。如下所示:
const int *p;
上述代码中,p
是一个指向整型常量的指针,其指向的值不能被修改。
示例1
#include <stdio.h>
void modify(const int *p){
// 编译错误:试图修改指向常量的指针所指向的值
*p = 100;
}
int main(){
int n = 10;
const int *p = &n;
modify(p);
printf("%d\n", n); // 输出10
return 0;
}
上述代码中,modify
函数试图修改指向常量的指针所指向的值,因此编译时会出现错误。如果将const
关键字去掉,则可以成功修改指向的值。
示例2
#include <stdio.h>
int main(){
int n = 10;
int m = 20;
int * const p = &n;
*p = 100;
// 编译错误:试图修改指向常指针的指针
p = &m;
return 0;
}
上述代码中,定义了一个指向整型常量的指针p
。由于使用了const
关键字,因此指针的值是不可修改的。如果试图修改指针的值,则会导致编译错误。
指针
指针的定义
在C语言中,指针是一种特殊的变量,保存了一个内存地址。通过指针,可以访问内存中的数据。常见的指针定义如下:
int n = 10;
int *p = &n;
上述代码中,p
是一个指向整型变量n
的指针。由于使用了&
运算符,因此p
保存了n
变量的内存地址。
指针和数组
在C语言中,数组名本身就是一个指向数组首元素的指针。因此,可以通过指针和数组来访问数组中的元素。如下所示:
int a[5] = {1, 2, 3, 4, 5};
int *p = a;
for(int i = 0; i < 5; i++){
printf("%d\n", *p);
p++;
}
上述代码中,通过把数组名a
赋值给指针p
,可以访问数组a
中的每一个元素。
示例3
#include <stdio.h>
void swap(int *p1, int *p2){
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main(){
int a = 10;
int b = 20;
int *p1 = &a;
int *p2 = &b;
swap(p1, p2);
printf("a = %d, b = %d\n", a, b);
return 0;
}
上述代码中,swap
函数接受两个指针类型的参数,用来交换这两个指针所指向的值。在main
函数中,定义了两个指针p1
和p2
,分别指向变量a
和b
。通过传递指针参数,可以实现变量值的交换。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入了解C语言中的const和指针 - Python技术站