C语言指针概述

在C语言中,指针是一种特殊的变量,它是存放地址的。指针变量前面的“*”表示该变量的类型为指针型变量。其一般形式为:
类型说明符 *变量名; 假设定义一个指针变量int *i_pointer用来存放整型变量i的地址,可以通过语句i_pointer = &i;

*为取值操作符(在定义时为声明变量为指针变量),&为取址操作符。

例如:int i = 2020;//定义整型变量i并赋值2020
int *pointer;//定义一个指针变量
pointer = &i;//取i的地址给指针变量
printf("%d\n",*pointer);//获取指针变量的值

指针与指针变量:知道了一个变量的地址,就可以通过这个地址来访问这个变量,因此又把变量的地址称为该变量的“指针”。
C语言中可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。
在定义指针变量时需注意:
定义指针变量时必须指定基类型。只有相同类型变量的地址才能放到指向对应类型变量的指针变量中。例如整型变量的地址只能放到整型的指针变量中。
指针变量中只能存放地址(指针),不能将任何非地址类型的数据赋给一个指针变量,否则编译器会将该值当成一个地址来处理。C语言中提供了地址运算符&来表示变量的地址,其一般形式为:&变量名;

数组与指针:
定义一个指向数组元素的指针变量的方法与指向变量的指针变量相同。
引用一个数组元素可以使用:
(1)下标法,如a[i]形式
(2)指针法,如*(a+i)或*(p+1)
其中a是数组名,p是指向数组元素的指针变量,其初值p=a。
注意:数组名即“翻译成数组的第一个元素的地址!”
字符串与指针:
对字符串的存取方法:可以用下标法,也可以用指针方法。

虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但二者之间是有区别的。
1.字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址),不是将字符串放到字符串指针变量中。
2.赋值方式,对字符数组只能对各个元素进行赋值。对字符指针变量则可以直接进行赋值,但赋值给指针变量的不是字符,而是字符串的第一个元素的地址。
3.对字符指针变量赋初值:
char *a = "i love china";等价于char *a;  a = "i love china";
4.如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址。也就是说,该指针变量可以指向一个字符型数据,但如果未对它赋予一个地址值,则它并未具体指向一个确定的字符数据。
5.指针变量的值是可以改变的,指针变量的改变即指针所指向的元素发生改变。若定义了一个指针变量并指向一个字符串,就可以用下标形式引用指针变量所指的字符串中的字符。

在这里插入图片描述

发布了40 篇原创文章 · 获赞 2 · 访问量 3378

猜你喜欢

转载自blog.csdn.net/BEYONDmonster/article/details/104836399