【C语言指针超详细讲解上篇】
一、指针的概念
指针变量是指保存地址的变量,即它的值就是一个地址。通过指针变量可以间接访问该地址处的数据。在C语言中,指针变量可以用来访问位于数组中的元素,也可以用来访问一段连续的数据。
二、指针变量的声明与初始化
指针变量的声明方式与普通变量不同,需要在变量名前面添加星号“*”符号。指针变量的初始化可以为该指针赋值为一个变量的地址,也可以将指针赋值为NULL,表示该指针不指向任何地址。
示例1:指针变量的声明与初始化
int *p; // 声明一个指向整型变量的指针
int a = 10;
p = &a; // 将指针p初始化为变量a的地址
printf("%d", *p); // 输出指针p所指向的值,即变量a的值(输出结果为10)
示例2:将指针赋值为NULL
int *p = NULL; // 将指针p赋值为NULL,表示该指针不指向任何地址
if (p == NULL) {
printf("p指针为空指针");
}
三、指针的运算
指针可以进行指针运算,包括指针加、减法,以及指针之间的比较运算。
示例3:指针加法运算
int a[5] = {1, 2, 3, 4, 5};
int *p = a; // 将指针p指向数组a的首地址
printf("%d", *(p+2)); // 输出p指针指向的位置加2的值,即数组a中下标为2的元素的值(输出结果为3)
示例4:指针比较运算
int a[5] = {1, 2, 3, 4, 5};
int *p1 = &a[2];
int *p2 = &a[4];
if (p1 < p2) {
printf("p1指针指向的地址比p2指针指向的地址小");
}
四、指针的传递
指针变量可以作为参数传入函数中,从而改变函数外部的变量的值。
示例5:指针传递
void swap(int *a, int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 10, b = 20;
swap(&a, &b); // 传入指向a和b的指针,即可以改变函数外部的a和b的值
printf("a=%d,b=%d", a, b); // 输出交换后的a和b的值(输出结果为a=20,b=10)
}
五、常量指针和指针常量
常量指针和指针常量是指针的两种常见形式:
- 常量指针:指向常量的指针,即指针的指向不能再改变。
- 指针常量:指针本身是常量,即指针变量不能再指向其他地址。
示例6:常量指针和指针常量的区别
int a = 10, b = 20;
const int *p1 = &a; // 常量指针,指针指向的值不能被修改
int *const p2 = &b; // 指针常量,指针本身不能被修改
*p2 = 30; // 可以通过*p2修改b的值
printf("b=%d", *p2); // 输出修改后的b的值(输出结果为30)
以上就是C语言指针超详细讲解上篇的内容,希望能对大家的学习有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言指针超详细讲解上篇 - Python技术站