我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: C/C++程序基础知识——笔试或面试可能用得上 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ income /'inkΛm/ n. 收入,收益,所得 ]


C/C++程序基础知识——笔试或面试可能用得上

昨天班上有位GG问我一个程序“问题”
发现仿佛很多GG不知道某些东西
在这里写一些,知道的GG些不要B4哈
如有错误,欢迎指出


[ 此贴被zhd32在2007-11-04 20:15重新编辑 ]
本帖最近评分记录:
  • 浮云:15(震月) 赞
  • 顶端 Posted: 2007-11-04 19:47 | [楼 主]
    zhd32



    性别: 帅哥 状态: 该用户目前不在线
    等级: 版主
    家族: YD一族
    发贴: 619
    威望: 0
    浮云: 543
    在线等级:
    注册时间: 2006-04-22
    最后登陆: 2009-06-22

    5come5帮你背单词 [ lung /lΛŋ/ n. 肺 ]


    一:内存
    Copy code
    void
    foo(void) {
        char *str1 = "test1"; // test1 这个串位于哪个位置? Q1
        char str2[] = "test2";//test2 这个串位于哪个位置?  Q2

        *str1 = 'a'; //正确否?Why? Q3
        *str2 = 'b'; //正确否?Why? Q4
    }

    A1: test1 位于 文本区(.TEXT)
    A2: test2 位于 栈(堆 是 堆,栈 是 栈, 不要混淆)
    A3: 不正确,不能修改文本区的数据,Windows会引起Win32异常(访问冲突),Linux会引发segment fatal
    A4: 正确,test2 位于栈内,随便你咋修改
    PS:不能在栈内分配过大的空间,不然会栈溢出
    Copy code
    void
    foo() {
        int largearray[1000 * 1000]; //溢出
    }


    Copy code

    int largearray[1000 * 1000]; //不会溢出
    void
    foo() {
        //........   
    }



    另外一个
    Copy code
    typedef struct {
        int a;
        char b;
        float c;   
    }mystruct;

    sizeof(mystruct) = ?


    一般情况下为 4 + 4 + 4 = 12,字节对齐,感兴趣的GG自己上外网找下


    [ 此帖被zhd32在2007-11-07 11:18重新编辑 ]
    顶端 Posted: 2007-11-04 19:47 | [1 楼]
    zhd32



    性别: 帅哥 状态: 该用户目前不在线
    等级: 版主
    家族: YD一族
    发贴: 619
    威望: 0
    浮云: 543
    在线等级:
    注册时间: 2006-04-22
    最后登陆: 2009-06-22

    5come5帮你背单词 [ accompany /ə'kΛmpəni/ vt. 陪伴,陪同,为…伴奏 ]


    数组和指针

    数组和指针
    Copy code
    void
    foo1(int array1[100]) {
        int array2[100];
        int *array3 = array;

        sizeof(array1) = ??
        sizeof(array2) = ??
        sizeof(array3) = ??
       
    }

    虚参中的数组会退化为指针,现有大部分操作系统都为平坦内存模式(不知道名字正确不,反正不会再依靠 段地址 + 偏移地址 来寻址了),32位机,32位内存地址长度,So,sizeof(array1) = 4,sizeof(array2) = 400 = 100 * 4,
    sizeof(array3) = 4

    还有个
    Copy code
    int array1[1000 * 1000];
    int *array2;
    void
    foo() {
        array2 = array1;
        //loop1
        for(int i=0; i < 1000*1000; i++) {
            array1[i] = i;
        }
       
        //loop2
        for(int i=0; i < 1000*1000; i++) {
            array2[i] = i;
        }
    }

    loop2和loop1的效率哪个高???

    loop1的效率高,编译器可直接计算出 array1[i] 代表的数据的偏移地址
    a).array1的起始地址(编译时可知)  +  i * sizeof(int)
    而需要2步才能计算出 array2[i] 的偏移地址
    a).取 array2 的值(运行时才可知) V2
    b).V2  +  i * sizeof(int)




    [ 此贴被zhd32在2007-11-04 20:33重新编辑 ]
    顶端 Posted: 2007-11-04 20:08 | [2 楼]
    zhd32



    性别: 帅哥 状态: 该用户目前不在线
    等级: 版主
    家族: YD一族
    发贴: 619
    威望: 0
    浮云: 543
    在线等级:
    注册时间: 2006-04-22
    最后登陆: 2009-06-22

    5come5帮你背单词 [ troublesome /'trΛblsəm/ a. 令人烦恼的,麻烦的,讨厌的 ]


    占楼
    暂时想不到其他可以说的了
    想起了补上来


    [ 此贴被zhd32在2007-11-04 20:36重新编辑 ]
    顶端 Posted: 2007-11-04 20:08 | [3 楼]
    zhd32



    性别: 帅哥 状态: 该用户目前不在线
    等级: 版主
    家族: YD一族
    发贴: 619
    威望: 0
    浮云: 543
    在线等级:
    注册时间: 2006-04-22
    最后登陆: 2009-06-22

    5come5帮你背单词 [ speaker /'spi:kə/ n. 说话者,发言者,说某种语言者,扬声器 ]


    Quote:
    引用第13楼yinx于2007-11-13 20:38发表的  :


    支持~~~,这些问题真的很重要而又很容易被忽略

    不过有一个小问题,“test1“这个字串是在.data(已初始化的数据段)里的。

    O??
    反正我记得是在静态数据区的,因为已初始化的数据段里的数据可以被修改~~
    洗完澡查一下
    顶端 Posted: 2007-11-13 23:07 | [4 楼]
    zhd32



    性别: 帅哥 状态: 该用户目前不在线
    等级: 版主
    家族: YD一族
    发贴: 619
    威望: 0
    浮云: 543
    在线等级:
    注册时间: 2006-04-22
    最后登陆: 2009-06-22

    5come5帮你背单词 [ bundle /'bΛndl/ n. 包裹,包袱,一包,一捆,一束 ]


    Quote:
    引用第13楼yinx于2007-11-13 20:38发表的  :


    支持~~~,这些问题真的很重要而又很容易被忽略

    不过有一个小问题,“test1“这个字串是在.data(已初始化的数据段)里的。

    有结论了
    http://192.168.2.8/bbs/read.php?tid=565881
    顶端 Posted: 2007-11-14 22:20 | [5 楼]
    zhd32



    性别: 帅哥 状态: 该用户目前不在线
    等级: 版主
    家族: YD一族
    发贴: 619
    威望: 0
    浮云: 543
    在线等级:
    注册时间: 2006-04-22
    最后登陆: 2009-06-22

    5come5帮你背单词 [ considerate /kən'sidərit/ a. 体谅(人)的,考虑周到的,慎重的 ]


    Quote:
    引用第16楼lengyeyu12于2007-11-17 14:05发表的  :
    细节千变万化
    想成高手就得去磨这些细节

    zhd32签哪儿了
    以前听说有个斑竹签baidu了,是不是你?
    .......

    baidu
    不想说了
    签的腾讯
    顶端 Posted: 2007-11-17 15:10 | [6 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.010717(s) query 6, Time now is:11-22 16:57, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号