C语言指针用法总结
1.指针的概念
指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。指针可以指向任何数据类型,如整型、字符型、实型等。
2.指针的声明
int *ptr; /* 一个整型变量的指针 */
char *ch; /* 一个字符型变量的指针 */
float *fptr; /* 一个单精度浮点型变量的指针 */
3.指针的初始化
指针的初始化即为指针赋值,可以将一个变量的地址赋值给一个指针,例如:
int x = 10; /* 声明整型变量并赋初值为10 */
int *ptr; /* 声明一个指向整型变量的指针 */
ptr = &x; /* 将x的地址赋值给ptr */
4.指针的运算
指针的运算包括指针加法、指针减法、指针比较等。
4.1 指针加法
指针加法可以增加指针的地址值,例如:
int arr[] = {1, 2, 3, 4};
int *ptr = arr; /* 将数组的首地址赋值给指针 */
ptr++; /* 指针加1,指向数组的下一个元素 */
4.2 指针减法
指针减法可以减小指针的地址值,例如:
int arr[] = {1, 2, 3, 4};
int *ptr = arr + 3; /* 将指针指向数组的第4个元素 */
ptr--; /* 指针减1,指向数组的第3个元素 */
4.3 指针比较
指针比较可以比较指针的地址值的大小关系,例如:
int arr[] = {1, 2, 3, 4};
int *ptr1 = arr; /* 将数组的首地址赋值给指针 */
int *ptr2 = arr + 2; /* 将指针指向数组的第3个元素 */
if (ptr1 < ptr2) {
printf("ptr1的地址值小于ptr2的地址值\n");
}
5.指针作为函数参数
指针可以作为函数参数,函数可以通过指针来改变实参的值,例如:
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int a = 1, b = 2;
swap(&a, &b); /* 通过指针将a和b的值交换 */
printf("a=%d, b=%d\n", a, b);
return 0;
}
6.示例说明
6.1 指针和数组
指针可以指向数组,可以通过指针来访问数组中的元素,例如:
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr;
for (int i = 0; i < 5; i++) {
printf("%d ", *ptr++);
}
printf("\n");
return 0;
}
6.2 指针和动态内存分配
通过指针可以对动态内存进行分配和释放,例如:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int*) malloc(sizeof(int) * 10); /* 分配10个整型变量的内存 */
for (int i = 0; i < 10; i++) {
*(ptr + i) = i;
}
for (int i = 0; i < 10; i++) {
printf("%d ", *(ptr + i));
}
printf("\n");
free(ptr); /* 释放分配的内存 */
return 0;
}
结语
以上是C语言指针用法的总结,指针是C语言中非常重要的一个概念,掌握好指针的相关知识对于程序的性能和效率有很大的影响。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言指针用法总结 - Python技术站