C语言数组指针的使用(非常详细)
在程序实际开发中,数组的使用非常普遍。根据数组占据内存中连续的存储区域这样一个性质,建立起指针和数组的关系,使用指针将使我们操作数组元素的手段更加丰富。本文将详细介绍利用C语言指针变量对数组进行操作。
可以定义指针变量指向任意一个数组元素。例如:
通过指针引用数组元素:*p 就是 a[0],*(p+1) 就是 a[1]……*(p+i) 就是 a[i]。
当一个指针变量指向了一个数组后,就可以利用指针变量对数组元素进行输入、输出和各种数据处理了。例如:
【示例1】编写一个函数,将数组中 10 个整数倒序输出。C语言代码如下:
字符数组法:
指针和数组并不相等。数组的属性和指针的属性大相径庭。当我们声明一个数组时,它同时也分配了一些内存空间,用于容纳数组元素。但是,当我们声明一个指针时,它只分配了用于容纳指针本身的空间。
当数组名作为函数参数传递时,实际传递给函数的是一个指向数组第一个元素的指针。对指针参数执行间接访问操作允许函数修改原先的数组元素。数组形参既可以声明为数组,也可以声明为指针。这两种声明形式只有当它们作为函数的形参时才是相等的。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
C语言数组指针
当指针变量里存放一个数组的首地址时,此指针变量称为指向数组的指针变量,简称数组指针。可以定义指针变量指向任意一个数组元素。例如:
int a[5],*p;
p = &a[0]; 或 p = a;
通过指针引用数组元素:*p 就是 a[0],*(p+1) 就是 a[1]……*(p+i) 就是 a[i]。
当一个指针变量指向了一个数组后,就可以利用指针变量对数组元素进行输入、输出和各种数据处理了。例如:
#include<stdio.h> int main( void) { int i, a[ ] = { 1, 3, 5, 7, 9 } int *p = a; for ( i = 0; i < 5; i++ ) printf( "%d\t", *( p + i ) ); printf( "\n" ); }

C语言数组指针作为函数参数
指向数组的指针可以作为函数形参,对应实参为数组名或已初始化的指针变量,此时可以通过“地址传递”实现数据的双向传递。【示例1】编写一个函数,将数组中 10 个整数倒序输出。C语言代码如下:
#include <stdio.h> void inv( int *x, int n ); int main() { int i,a[ ] = { 3, 7, 9, 11, 0, 6, 7, 5, 4, 2 }; printf( "The original array:\n" ); for( i = 0; i < 10; i++) printf( "%3d", a[i] ); printf( "\n" ); inv( a,10 ); printf( "The array has been inverted:\n" ); for( i = 0; i < 10; i++ ) printf( "%3d", a[i] ); printf( "\n" ); } void inv( int *x, int n ) { int t,*i,*j; for(i = x, j = x + n - 1; i <= j; i++, j-- ) { t = *i; *i = *j; *j = t; } }运行结果:
The original array:
3 7 9 11 0 6 7 5 4 2
The array has been inverted:
2 4 5 7 6 0 11 9 7 3
C语言指针与字符数组
指针变量可以直接用来处理字符串,用指针变量处理字符串有其独特之处。字符数组法:
char string[ ] = "name";
printf( "%s\n", string );
或: for ( i = 0; i < 5; i++ )
printf( "%c", string[ i ] );
归纳总结
在绝大多数表达式中,C语言数组名的值是指向数组第一个元素的指针。这个规则只有两个例外:sizeof
返回整个数组所占用的字节而不是一个指针所占用的字节;单目运算符 &
返回一个指向数组的指针,而不是一个指向数组第一个元素的指针的指针。指针和数组并不相等。数组的属性和指针的属性大相径庭。当我们声明一个数组时,它同时也分配了一些内存空间,用于容纳数组元素。但是,当我们声明一个指针时,它只分配了用于容纳指针本身的空间。
当数组名作为函数参数传递时,实际传递给函数的是一个指向数组第一个元素的指针。对指针参数执行间接访问操作允许函数修改原先的数组元素。数组形参既可以声明为数组,也可以声明为指针。这两种声明形式只有当它们作为函数的形参时才是相等的。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。