c语言指针用法有哪些

1. C语言指针的基本概念

在C语言中,指针(pointer)是一种存储变量地址的变量,通过指针可以操作一些数据结构,如链表,树等。C语言中的指针可以像一般变量一样进行赋值、运算、比较等操作,对数据结构的操作也可以通过指针来实现。

指针在C语言中占有重要位置,因为C语言中内存的分配和释放都经常要用到指针。

在C语言中,变量实质上是一段内存上的区域,而每个变量都对应着一个内存地址,指针就保存着这个地址。

2. 指针的声明及初始化

2.1 指针的声明

在程序中使用指针前,需要先声明指针,并指定指针指向的数据类型。指针的声明方式如下:

数据类型 *指针变量名;

例如声明一个指向int类型数据的指针:

int *p;

2.2 指针的初始化

指针变量在定义时不会被自动赋值为 NULL,所以在使用指针之前,要先将其初始化为 NULL 或者一个有效的地址。

初始化指针可以通过以下方式进行。

int *p = NULL;

int a = 10;

p = &a;

这里先将指针 p 初始化为 NULL,表示它没有指向任何有效的地址,然后将其指向变量 a 的地址。

3. 指针的应用

3.1 指针的运算

指针在 C 语言中可以进行自增和自减操作,表示依次指向下一个或上一个内存地址。

int a[5] = {1, 2, 3, 4, 5};

int *p = a;

printf("%d %d\n", *(p+1), *(++p));

运行结果为:

2 2

解释:第一个打印的是指针 p 按照顺序指向的第二个元素;第二个打印的是指针 p 自增后指向的第二个元素。

3.2 指针作为函数参数

指针可以作为函数参数,传递指针作为参数可以改变指针所指向的值。

void swap(int *x, int *y){

int temp = *x;

*x = *y;

*y = temp;

}

int main(){

int a = 1, b = 2;

int *p1 = &a, *p2 = &b;

swap(p1, p2);

printf("%d %d\n", a, b);

return 0;

}

运行结果为:

2 1

在 swap 函数中,通过指针 x 和 y 分别取出它们指向的内存地址的对应的数值,然后通过中间变量交换这两个数的值;使用指针作为函数参数可以避免对变量的拷贝操作,提高程序运行效率,并且能够更好地操作数组和函数等数据结构。

3.3 指针与数组

数组名本身就是一个指针,可以使用指针的方式操作数组。

int a[5] = {1, 2, 3, 4, 5};

int *p = a;

for(int i = 0; i < 5; i++){

printf("%d ", *(p+i));

}

运行结果为:

1 2 3 4 5

解释:使用指针遍历数组 a。

3.4 指针与字符串

C语言中的字符串实际上是由字符数组表示的,因此,可以使用指针的方式来处理字符串。

char *str = "hello, world!";

printf("%s\n", str);

运行结果为:

hello, world!

解释:使用指针来打印字符串。

4. 总结

指针是C语言中非常重要的一种数据类型,可以对数组、函数等复杂数据结构进行操作。因此,在学习C语言时,需要充分理解指针的基本概念、声明和初始化、应用等方面的知识,才能更好地掌握C语言的编程应用。

后端开发标签