360精选
在C/C++编程中指针最重要的概念之一,它可以提高程序员的灵活性和效率。指针有助于创建更紧凑的代码,更快的执行时间,以及跟高效的内存利用。此外指针还可以帮助程序员更好的理解程序的内部结构从而更好地实现程序的功能。本篇从基础概念出发针对C语言来初步认识指针 一、指针的作用 在C语言中指针是一种特殊的变量,它能够存储内存地址,指向其它变量或内存中的位置。指针可以用来访问内存中的数据,并且可以用来操作内存中的数据,比如修改内存中的值或者把一个变量的值放入指针指向的内存地址。指针还可以用来实现数组、结构体和动态内存分配,以及实现回调函数等编程技术。 2.1指针与一维数组 C语言数组的指针是指向数组的首地址的指针,它可以用来访问数组中的元素。它的声明方式如下: int *arr; /*声明一个指向整型数组的指针*/ arr = p[0]; arr = p; /*指向数组首元素的地址*/ 访问数组元素: 数组名+i -- 数组名[i] int val = arr[i]; int val = *(arr+i); int val = p[i]; int val = *(p+i); /*访问数组第i个元素*/ 从程序中不难看出p[i]、*(p+i)、arr[i]、*(arr+i)具有相同的含义 2.2指针与多维数组 C语言指针可以用来操作多维数组,比如一个二维数组int arr[m][n],可以用指针来访问它的每个元素: int (*p)[n] = arr; /*P指向arr的首地址*/ for (int i = 0; i m; i++) { for (int j = 0; j n; j++) { printf(“%d ”, *(*(p + i) + j)); /*访问第i行j列元素*/ } } 其中p+i是访问第i行第一个元素地址此外arr[m][n]==*(arr[m][0]+n)==*(arr[m]+n)==*(*(arr+1)+1) 5.1const指针 常量化目标表达式,const作用限制了通过指针去修改指针的目标,但可以修改目标。 const 数据类型*指针变量名称 const int *p; //允许修改p,指针p可以改变指向 常量化指针变量,使得指针变量的指向不能修改但可以通过指针变量的名称去修改指针所指向变量的值 数据类型 *const指针变量名称=指针运算表达式 int *const p = m; *p=n; //p指向的值可以发生变化但p指向的地址不能改变(p = n是错的) 常量化指针变量及其目标,既不可修改指针所指向的地址也不可修改地址上的值 const 数据类型 *const 指针变量名 = 指针运算的表达式 (可分为const在*前和在*后两种情况,在*前指向的地址可变,在*后地址上的数据可变) void指针是一种不确定数据类型的指针变量,可使用强转让其变为任何类型的变量 void *指针变量名称; int m = 10; void *p; p = (void*)m; //将m地址强转为void指针类型赋给p printf(d%,*(int*)p); //将void指针强转为int指针输出结果为10 使用void指针时一般需通过强制类型转换才能使void型指针变量进行指针的运算或得到目标的值 7.1指针的算数运算 运算符 计算形式 意义 + p+n 指针向地址大的方向移动n个数据 ++ ++p或p++ 指针向地址大的方向移动一个数据 - p-n 指针向地址小的方向移动n个数据 -- --p或p-- 指针向地址小的方向移动一个数据 - p-q p指针和q指针之间相隔元素个数 7.2指针的关系运算 表达式语句 表达式说明 char ch='a'; char *cp=ch; 初始化指针cp,并赋初值为变量ch的地址 cp *cp='a' 将字符‘a’赋给cp所指向的对象,此时,*cp的值为‘a’(要确保cp已经被初始化),cp的值并没有改变 *cp+1 由于“*”操作符的优先级要高于“+”操作符,因此,cp首先 执行取内容操作,即将*cp的值加1为‘b' *(cp+1) 让cp指向下一个内存单元,再取出其中的内容。因为下一个内存单元有可能是非法地址,所以此操作一定要格外小心,cp后面内容不确定 cp++ 由于“++”位于cp之后,因此在该表达式中,先取出cp的值 作为表达式的值,再将cp的值加1 ++cp 由于“++”位于cp之前,因此在该表达式中,先将cp的值加 1,再将cp的值作为表达式的值 *cp++ 这时出现了两个运算符,这两个运算符位于同一个优先级,且结合性自右向左,因此,它相当于*(cp++)。由于“++”操作符位于cp的右边,因此,这里涉及3个步骤。 (1)产生cp的一份复制。 (2)++操作符增加cp的值。 (3)在原cp复制的部分执行间接访问操作,因此,表达式的值是提取原cp的内容 *++cp 这里与上例相似,也是出现了两个运算符,它相当于*(++cp)。由于“++”运算符位于cp的左边,因此,该表达式先将cp的值加1,再取其中的内存单元的内容 C语言指针 在C/C++编程中指针最重要的概念之一,它可以提高程序员的灵活性和效率。指针有助于创建更紧凑的代码,更快的执行时间,以及跟高效的内存利用。此外指针还可以帮助程序员更好的理解程序的内部结构从而更好地实现程序的功能。本篇从基础概念出发针对C语言来初步认识指针一、指针的作用在C语言中指针是一种特殊的变量,它能够存储内存地址,指向其它变量或内存中的位置。指针可以用来访问内存中的数据,并且可以用来操作内存中的数据,比如修改内存中的值或者把一个变量的值放入指针指向的内存地址。
查看更多

c语言指针_视频

视频聚合
全部3390条

【图】c语言指针教学PPT

360图片
没有更多结果了~