字体
第(5/6)页
关灯
   存书签 书架管理 返回目录
ss,char *pds){

    while(*pds++=*pss++);

    }

    main(){

    char *pa="CHINA",b[10],*pb;

    pb=b;

    cpystr(pa,pb);

    printf("string a=%s\nstring b=%s\n",pa,pb);

    }

    10.4.2 使用字符串指针变量与字符数组的区别

    用字符数组和字符指针变量都可实现字符串的存储和运算。但是两者是有区别的。在使

    用时应注意以下几个问题:

    1. 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放

    在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    由于若干个数组元素组成的,它可用来存放整个字符串。

    2. 对字符串指针方式

    char *ps="C Language";

    可以写为:

    char *ps;

    ps="C Language";

    而对数组方式:

    static char st[]={"C Language"};

    不能写为:

    char st[20];

    st={"C Language"};

    而只能对字符数组的各元素逐个赋值。

    从以上几点可以看出字符串指针变量与字符数组在使用时的区别,同时也可看出使用

    指针变量更加方便。

    前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。但是对

    指针变量直接赋值是可以的。因为 C 系统对指针变量赋值时要给以确定的地址。

    因此,

    char *ps="C Langage";

    或者

    char *ps;

    ps="C Language";

    都是合法的。

    10.5 函数指针变量

    在C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的

    首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指

    向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量

    称为“函数指针变量”。

    函数指针变量定义的一般形式为:

    类型说明符  (*指针变量名)();

    其中“类型说明符”表示被指函数的返回值的类型。“(* 指针变量名)”表示“*”后面的变量

    是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。

    例如:

    int (*pf)();

    表示 pf 是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。

    【例 10.31】本例用来说明用指针形式实现对函数调用的方法。

    int max(int a,int b){

    if(a>b)return a;

    else return b;

    }

   
上一页 目录 下一页