码迷,mamicode.com
首页 > 编程语言 > 详细

指针数组,数组指针,指针函数,函数指针

时间:2015-03-20 06:42:01      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

1.指针数组:顾名思义,指针数组就是数组里面元素都是指针,代码如下:

技术分享
#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    //printf("Hello, World!\n");
    int a=1,b=2;//先定义两个变量
    int *p[]={&a,&b};//然后定义数组,数组元素都是指针
    printf("%p\n",p[0]);
    printf("%p\n",p[1]);

    return 0;
}
View Code

 

2.数组指针:即指针指向数组中的元素,代码如下:

技术分享
#include <stdio.h>
int main(int argc, const char * argv[]) {
    // insert code here...
    //数组指针
    
    int nums[]={1,2,3,4,5,6};//定义一个数组
    //int *p=&nums[0];
    int *p=nums;//此语句和上面一句话是等价的,默认取数组的首地址,即数组第一个元素的地址
    printf("%d\n",*p);
    printf("%d\n",*p+1);//*p+1 可以取到*p对应数组元素的下一个元素
    printf("--------\n");
    
    for(int i=0;i<sizeof(nums)/sizeof(int);i++)//用数组指针便利这个数组
    {
        printf("%d\n",*p+i);
    }
    return 0;
}
View Code

3.指针函数:即函数的返回值为指针的函数:

技术分享
#include <stdio.h>
//定义一个函数,返回两个数中较大的地址

int *max(int *pa,int *pb)//定义函数,int *函数名(参数)
{
    return *pa>*pb ?pa:pb;//返回大数的地址
}

int main(int argc, const char * argv[]) {
    // insert code here...
    int a=5,b=3;
    printf("a=%p,b=%p\n",&a,&b);//打印a和b的地址
    int *p=max(&a,&b);//传入参数,分别是a和b的地址
    printf("%p\n",p);//输出较大数的地址
}
View Code
技术分享
//  输入小写数字,输出大写星期几


#include <stdio.h>

char *getDay(int n)//指针函数
{
    //定义一个指针数组,用来返回地址
    char *days[]=
    {
        "星期一",
        "星期二",
        "星期三",
        "星期四",
        "星期五",
        "星期六",
        "星期日",
    };
    return days[n-1];//返回地址
}

int main(int argc, const char * argv[]) {
    // insert code here...
    //printf("Hello, World!\n");
    
    char *pday=getDay(6);//定义一个指针接收函数的返回值
    printf("%s\n",pday);//打印出这个指针的内容
    
    return 0;
}
View Code

4.函数指针:指向函数的指针,就是函数指针

//定义方法:类型 (*函数指针名)(参数)....

未完待续

指针数组,数组指针,指针函数,函数指针

标签:

原文地址:http://www.cnblogs.com/chenqingxiao/p/4352553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!