C语言第十二回合:再谈指针
【学习目标】
1. 指针数组
2. 数组指针
3. 函数指针
( 1 )指针数组
指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身
决定。它是“储存指针的数组”的简称
如:
定义数组名为ptr,其中包含10个指向int类型的数据的指针
int *ptr[ 10]; //指针数组,int*修饰数组的内容
[程序]
#include <stdio.h> void print_error( int n ); int main( void ) { inti; for(i= 0; i< 4; i++ ) { print_error(i ); } putchar(10 ); //printf("\n" ); return 0; } void print_error( int i ) { //定义包含4个指向int类型的数据指针的数组 char*error[]= { "cann`t openfile\n", "read error\n", "write error\n", "media failure\n" }; printf( "%s", error[ i ] ); return; }
( 2 )数组指针
数组指针:首先它是一个指针,它指向一个数组。在 3 2 位系统下永远是占 4 个字节,
至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。
格式:类型 ( *标识符 )[ ]
// int ( *p )[ 5 ];
#include <stdio.h> void print( char ( *ptr )[ 10 ], int n ) //数组指针作为参数 { inti; for(i= 0; i< n; i++ ) { printf("%s\n", *( ptr+ i ) ); } return; } int main( void ) { charname[ 3 ][ 10 ]= { "zhangsan", "lisi", "wangwu" }; print(name, 3 ); //打印 return 0; }
( 3 )函数指针
函数指针:就是指向函数的指针。
格式:类型 ( * 标识符 )( );
[程序 ]
#include <stdio.h> //使用指针参数 //功能:两个数交换 void swap( int *a, int *b ); int main( void ) { int n= 10; int m= 20; //第一指针函数,返回类型void,f为函数指针 void ( *f )(); f=swap; //f指向swap。注意:类型必须匹配 printf( "交换前:n= %d m=%d\n", n, m ); if( n< m ) //如果n< m,就交换 { f(&n, &m ); } printf( "交换后:n= %d m= %d\n", n, m ); return 0; } void swap( int *a, int *b ) { inttemp; temp=*a; *a=*b; *b=temp; return ; }
运行结果:
交换前:n=10 m= 20
交换后:n=20 m= 10
【指尖的微笑】错误在所难免,希望得到大家的指正^-^
转载时保留原文的链接http://codingit.howbbs.com和http://blog.csdn.net/mirrorsbeyourself
时间: 2024-12-28 10:41:51