指针相关知识:一级指针、数组赋值、指向多维数组的指针变量、数组名作为函数的参数、指针和字符串、指针数组、指向指针的指针、指针和函数、指针和const变量

您所在的位置:网站首页 给一个指针赋值只要赋一个地址值 指针相关知识:一级指针、数组赋值、指向多维数组的指针变量、数组名作为函数的参数、指针和字符串、指针数组、指向指针的指针、指针和函数、指针和const变量

指针相关知识:一级指针、数组赋值、指向多维数组的指针变量、数组名作为函数的参数、指针和字符串、指针数组、指向指针的指针、指针和函数、指针和const变量

2024-07-12 00:50| 来源: 网络整理| 查看: 265

1、变量的存储 (1)在C语言中,一般使用以下方式定义变量:

int i;

以上语句的作用是:要求系统在内存中分配一个类型为int型的存储空间。 (2)变量名实质是内存单元地址的一个符号,该符号代表内存地址(变量所占单元的首地址)。 (3)取地址符&:使用该运算符可以获取变量的内存单元地址(如果占用多个内存单元,则将得到首地址)。 查看变量地址示例:

#include int main(void) { int i = 10; printf("变量i的值为:%d\t存储的地址为:%d\n", i, &i); return 0; }

在这里插入图片描述

2、指针和简单变量 (1)指针本身是一种数据类型,也要占据一定的质量(内存)。但在一些算法或数据结构分析中,指针变量往往用一个指向符号来表示,因此被称为“指针”。 (2)指针的概念:在C语言中,将内存单元的编号或地址称为指针。可通过一个变量来存放指针,这种变量称为指针变量。因此一个指针变量的值就是某个内存单元的地址,或称为某内存单元的指针(即指针变量存放指针)。 (3)访问数据的方式:直接访问和间接访问。 直接访问:使用变量名直接访问内存单元。 间接访问:通过存储的指针地址访问该地址中对应存储的数据。

3、创建指针 (1)在C语言中,必须将指针保存在指针变量中。 (2)定义指针变量的一般形式: *类型说明符 变量名1,变量名2; 其中,星号(*)表示只是一个指针变量,变量名即定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。 (3)一个指针变量只能指向同类型的变量。针对不同类型的指针变量,对指针进行加减运算时指针移动的字节数将会有所不同。

4、初始化指针变量 (1)指针变量必须初始化才能使用 因为刚定义的指针变量中可能有一个随机的值,在指针变量中,该值表示一个内存地址。如果该内存地址正好是操作系统的代码区域,修改该内存地址中的值就会视系统崩溃。 (2)指针变量的赋值只能赋予地址,决不能赋予任何其他数据(0除外),否则也可能引起错误。 (3)未使用的指针应当赋值NULL,已表明它未执行任何地方。当指针的值为NULL时,称该指针为空指针。 NULL是一个符号常量,表示0值。所以可以给指针变量赋值为0,与赋值为NULL等价。

5、指针变量的引用 运算符“”不仅能从指定内存地址中取得内容,也可修改指定内存地址中的内容。 例如:可以使用pi来操作变量i中的值。

int i = 10; int *Pi = &i;

*pi和变量i都指向完全相同的内存地址,可以互相取代。指针和变量的关系图如下: 在这里插入图片描述 i表示该地址中存储的数据 &i表示变量i的地址

*pi表示其中存储的地址储存的数据,该数据为i的数据 pi表示该地址中存储的数据,该数据为i的地址,即&i &pi表示指针变量pi的地址

示例:

#include int main(void) { int i = 10; int *pi = &i; printf("i最终表示为:%d\n&i最终表示为:%d\n" "*pi最终表示为:%d\npi最终表示为:%d\n&pi最终表示为:%d\n", i,&i,*pi,pi,&pi); return 0; }

在这里插入图片描述

6、数组赋值 若有一个二维数组a[M][N],定义一个指针变量int *p;将二维数组的某一行的首地址赋予p有3种方式:

p = a[M]; p = &a[M]; p = &a[M][0];

7、指向多维数组的指针变量 (1)p++:相当于(p++),因为++的优先级大于* (2)多维数组的指针表示: ①a是一个数组,a执行一个数组; ②a+i指向一个数组; ③a、a、&a和&a[0][0]的数值相同; ④a[i]+j是一个地址,(a+i)+j与其相同; ⑤a[i][j]是数组元素的值,((a+i)+j)和(a[i]+j)与其相同。 (3)定义指向多维数组额指针变量的基本格式: *数据类型 (指针变量名)[N]; 赋值方式: 指针变量名=多维数组名; (4)示例:用指针变量指向数组的一行数据

#include #include int main(void) { int a[4][5], i, j; int(*p)[5]; p = a; srand(NULL); for (i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3