C指针(2)

4.函数和指针
4.1. 指向函数的指针
     指向函数的指针即通常说的函数指针,正是由于这些简称,所以它和返回指针的函数(指针函数)容易混淆,而且也由于写法上比较相近,就像数组指针(int (*p)[4])和指针数组(int *p[4])一样,前者表示指针变量p指向一个一维数组,这个数组含有4个int型变量,所以p++后,P就指向下一个一维数组;而后者表示p是一个数组,含有4个指向int型数的指针分别为p[0],p[1],p[2],p[3]。
int max(int x,int y){
}
int (*ps)()=swap;    //定义了一个函数指针指向swap函数
int (*ps)(int x,int y);    //也定义了一个函数指针。
调用时:max=max(a,b);或max=(*ps)(a,b);
4.2.  返回指针的函数
char *getString(char strings[][10],int n){
    return strings[i]    //假设返回最长字符串
}
调用时:char *p=getString(strings,4);
printf("%s/n",p);
4.3.  main函数
    main函数是C语言中最重要的一个函数,但是通常在编写程序的时候很少用到使用参数的main(int argc,char *args[])函数,下面是一个例子
int main(int argc,char *args[]){
    //char *args[]形参是一个指针数组,每个元素都是一个char型指针,所以可以指向一个数组
    while(argc-->1){
        printf("%s/n",*(++args));
    }
}
5.结构体
    简单的结构体很简单,要注意区分的是指向结构体的指针,如struct PEOPLE *p=people1;这里假设PEOPLE是定义的一个结构体类型,people1是PEOPLE类型的结构体变量。
使用指针调用结构时有两种方法:1)(*p).name或2)p->name。
    使用结构体来编写面向对象的代码。
例子:
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
    int x;
    int y;
    void (*print)();
}NODE;
void print();
NODE *initNODE(){
    NODE *node=(NODE*)malloc(sizeof(NODE));
    node->print=print;
    return node;
}
NODE *node=NULL;
int main(){
    node=initNODE();
    scanf("%d%d",&node->x,&node->y);
    node->print();
    return 0;
}
void print(){
    printf("x=%d/ty=%d",node->x,node->y);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值