C语言 指针 地址算数运算 字符指针 指针数组 多维数组 函数指针(五)

2014-11-23 19:55:51 · 作者: · 浏览: 81
th_name(int n) { /* * 初始化指针数组, 指针数组中的元素指向一个字符串 */ static char *name[] = { Illegal month, January, Febrary, March, April, May, June, July, August, September, October, November, December }; printf(sizeof(name) = %d , sizeof(name)); //返回一个指针, 这个指针指向字符串 return (n < 1 || n > 12) name[0] : name[n]; } int main(int argc, char **argv) { printf(month 2 is %s , month_name(2)); return 0; }
执行结果 :

[root@ip28 pointer]# gcc montn_name.c                               
[root@ip28 pointer]# ./a.out 
sizeof(name) = 104 
month 2 is Febrary 


二维数组示例程序 :

/*************************************************************************
    > File Name: montn_name.c
    > Author: octopus
    > Mail: octopus_work.163.com 
    > Created Time: Wed 19 Mar 2014 12:58:48 AM CST
 ************************************************************************/

#include
  
   

char *month_name(int n)
{
        /*
         * 初始化指针数组, 指针数组中的元素指向一个字符串
         */
        static char name[][20] = {
                Illegal month, 
                January, Febrary, March,
                April, May, June,
                July, August, September,
                October, November, December
        };

        printf(sizeof(name) = %d 
, sizeof(name));

        //返回一个指针, 这个指针指向字符串
        return (n < 1 || n > 12)   name[0] : name[n];
}

int main(int argc, char **argv)
{
        printf(month 2 is %s 
, month_name(2));
        return 0;
}
  

执行结果 :

[root@ip28 pointer]# gcc month_array.c           
[root@ip28 pointer]# ./a.out 
sizeof(name) = 260 
month 2 is Febrary 


对比 : 二维数组 占用了 260 字节内存, 指针数组占用了 104字节的内存;

.

作者 : 万境绝尘

转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21402047

.