Linux伊甸园首页

控制面板 自由新闻 自由软件 自由文档 自由论坛 自由商城 联系我们
我的收藏 推荐文章 会员登陆 最后更新 高级搜索 退出登陆
新闻动态
新手入门
技术前沿
系统管理
网络管理
使用经验
编程开发
系统安全
解决方案
硬件相关
Unix家族
数据库类
观点评论
人物介绍



Linuxeden.com-- Linuxeden 新闻 文档 资料 教程 Linux伊甸园 / 编程开发 / C语言中与数组和指针有关的sizeof问题
C语言中与数组和指针有关的sizeof问题  找linux工作,招linux人才,到Linuxeden人才频道
2007-04-06    articleman       点击: 1736
C语言中与数组和指针有关的sizeof问题

C语言中与数组和指针有关的sizeof问题

 

 引自:http://blog.chinaunix.net/u1/35100/showart_271369.html

帮助理解数组与指针的关系

#include <stdio.h>
#include <string.h>

int main (int argc, char** argv)
{
        char as[10];
        char as2[10][20];
        char * ps = as;
        char *pa[10];
        char (*ppa)[10];
        char *pc = "hello";
        char pac[] = "hello";

        /* as与ps是有本质区别的,ps仅仅是一个字符指针,而as则指代由10个char */
        /* 组成的字符数组 */
        printf("sizeof(as)=%d\n", sizeof(as));
        printf("sizeof(ps)=%d\n", sizeof(ps));
      
        /* 同理,as2[0]指代由20个char组成的字符数组 */
        /* as2指代整个二维字符数组 */
        printf("sizeof(as2[0])=%d\n", sizeof(as2[0]));
        printf("sizeof(as2)=%d\n", sizeof(as2));
       
        /* pa是由10个字符指针组成的数组 */
        /* *pa是这个数组中的第一个元素 */
        printf("sizeof(pa)=%d\n", sizeof(pa));
        printf("sizeof(*pa)=%d\n", sizeof(*pa));

        /* ppa是一个指向由10个char组成的数组的指针 */
        /* (*ppa)才是指代整个数组 */
        printf("sizeof(ppa)=%d\n", sizeof(ppa));
        printf("sizeof(*ppa)=%d\n", sizeof(*ppa));
       
        /* pc只是一个字符指针, (*pc)是一个字符 */
        printf("sizeof(pc)=%d\n", sizeof(pc));
        printf("sizeof(*pc)=%d\n", sizeof(*pc));

        /* pac则是一个字符数组, 注意它的大小是6,而不是5,因为后面会自动加一个'\0' */
        printf("sizeof(pac)=%d\n", sizeof(pac));
}

程序的输出结果是:
sizeof(as)=10
sizeof(ps)=4
sizeof(as2[0])=20
sizeof(as2)=200
sizeof(pa)=40
sizeof(*pa)=4
sizeof(ppa)=4
sizeof(*ppa)=10
sizeof(pc)=4
sizeof(*pc)=1
sizeof(pac)=6

 

 

责任编辑: articleman
发表评论 查看评论 加入收藏 Email给朋友 打印本文
如果你想对该文章评分, 请先登陆, 如果你仍未注册,请点击注册链接注册成为本站会员.
平均得分 0, 共 0 人评分
1 2 3 4 5 6 7 8 9 10
Copyright © 2002 -2003 Linuxeden.com-- Linuxeden 新闻 文档 资料 教程 Linux伊甸园
All rights reserved.