C语言基础知识(三)——指针

时间:2023-03-09 17:27:09
C语言基础知识(三)——指针

指针定义

1、指针的值表示的是它所指向对象的地址,指针+1表示的是下一元素的地址,按**字节**编址,而不是下一字节的地址。
2、依照数据类型而定,short占用两字节、int占用4字节、double占用8字节。
3、地址的表示方式依赖于计算机的内部硬件。
[上一讲](https://www.cnblogs.com/jiaqinbi/p/11967784.html)的数组其实就是变相的在使用指针,数组名就是就是数组元素的首地址,如rain == &rain[0][0];

指针用法|数组与指针的关系

1、指针前面加*运算符可以得到指针所指向对象的值,取址符&表示对象地址,如下所示
int array[2] = {1, 2};
printf("数组第一个元素地址两种表示方法是否相同:%d\n", &array[1] == array); //1;
printf("指针表示法:数组第一个元素数据:%d \t 数组第二个元素数据:%d \n", *(array), *(array+1));
printf("数组表示法: 数组第一个元素数据:%d \t 数组第二个元素数据:%d \n", array[0], array[1]);
2、指针本身也有自己的地址,array指的是数组第一个元素的地址,而&array指的是存放array首地址值的地址,因此array与&array虽然都是地址,但并不相同。
3、在array数组中,array+1表示array数组的首地址加上1个int大小,其与array++等价,指向数组的下一元素的地址。递减类似
4、同一数组中指针求差表示的是两元素之间的距离(以类型大小为单元)。

注意

1、*创建一个指针时,系统只分配了储存指针本身的内存,并未分配储存数据的内存。因此,在使用指针之前,必须先用以分配的地址初始化它!*
2、如果创建的数组数据要求不可被更改,则可使用const关键字,将创建的数组视为常量无法更改。关于更深入的理解请参考
3、关于更详细的const解释请看下图

C语言基础知识(三)——指针

C语言基础知识(三)——指针

C语言基础知识(三)——指针

C语言基础知识(三)——指针