• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評論-173  文章-70  trackbacks-0
                 今天下午去參加光電實驗室的暑期實習生筆試,本來不大想去的,因為畢竟暑假已經確定了實習,所以即使通過了也肯定不會去的,而且到時候要解釋的話也會很麻煩,不過作為國家重點實驗室,我想看看筆試題目到底怎么樣,也或許是因為最近剛好考試周完了,閑著蛋疼,所以就跑過去了。
               原題目很簡單,就是如下:
                   struct tr t[3] = {5,&t[1],7,&t[2],9,0};
                   struct tr *p;
                   p=&t[0];
              然后列出了幾個選項,讓說出了分別哪一個表達式表示的值為6.具體選項就是:
                 p->n++   ++p->n    (*p).n++    ++p->n
              當然,題目的話選項還有些不記得了,不過覺得其實只要理解了原理,那么就很容易判斷了。

            先看代碼:
             
            #include <stdio.h>

            struct tr{
                
            int n;
                
            struct tr *next;
            };

            int main(){
                
            struct tr t[3= {5,&t[1],7,&t[2],9,0};
                
            struct tr *p;
                p
            =&t[0];
                printf(
            "p->n++=%d\n",p->n++);
                printf(
            "p->n=%d\n",p->n);
                printf(
            "*p=%d\n",*p);
                printf(
            "(*p).n=%d\n",(*p).n);
                printf(
            "(*p).n++=%d\n",(*p).n++);
                printf(
            "++p->n=%d\n",++p->n);
            }


            運行結果如下:
            p
            ->n++=5
            p
            ->n=6
            *p=6
            (
            *p).n=6
            (
            *p).n++=6
            ++p->n=8
            Press any key to 
            continue


             首先,看看上面的題目中的那個初始化的含義吧!
             struct tr t[3] = {5,&t[1],7,&t[2],9,0};

            注意這樣的一個結構體式可以初始化的,不同于C++的作用域限定范圍!struct是公有的數據訪問權限。

            剩下了的問題就是,各個的含義是多少了。
            p->n 表示的就是p指向的節點的證書范圍域,所以是5,當然:重點來了,由于是說的表達式的值,所以分為前置和后置表達式的區別了。
            (關于前置和后置的區別見我的這篇博文:http://www.shnenglu.com/deercoder/archive/2010/01/22/106251.aspx
            如果是p->n++,那么這個表達式的值為:5,但是運算完成之后,n的值會變化,所以n的值是6,但是表達式的值的含義要搞清楚,確切的說就是這個表達式的結果,由于后置的++是在完成之后才做的,所以不能影響到表達式的值,于是就為5。
            而前置的++則是先進行++運算之后才得到運算的結果,所以如果是++p->n的話值就是6.

            注意我的這個Demo的例子中,由于將所有表達式的值都放在一起輸出,所以前面的操作會影響后面的值和表達式。比如第一個輸出時5,但是會修改第一個節點的n值變為6,所以后面的輸出相應的要修改!

            題目中問的是值,所以直接單個的輸出也是可以的,注意更能直接的看到結果。
            另外很簡單的幾點是:
            1. p->  和 *p. 操作時一樣性質,一直是直接指針訪問,一個是用的先訪問節點,然后通過節點的域來得到相應的值。

            2.運算的優先級。注意->和.操作符的運算級都要高些,所以先進行的。

            3.等價的寫法。p->n ===========(*p).n


            ps:前段時間忙著準備考試,考試周當然比較忙,而且突然發現最近博客沒有怎么更新了,說明自己常常以各種借口放松對技術的學習,鄙視下自己,總結下前段時間的事情吧:

            1.準備考研。說是準備,其實就是看看單詞,不過覺得還是比較難,很多不認識,由于沒有拿到保底的工作offer,所以現在就只能破釜沉舟了,后面也就沒有參加或者不計劃參加什么網易游戲,阿里巴巴,百度什么的筆試了,畢竟想起來要是暑假實習就耗上2個多月或者3個月的話,考研的事情就會徹底的泡湯了。

            2.軟考。再次華麗麗的裸考,大學里面的裸考很多啊,四六級都是,不過分數不錯,而且我也比較容易滿足,都是550+,雖然不高,不過一次性過了,而且沒有付出的感覺還是很好。這次軟件設計的考試,完全都沒有時間準備,因為有期中考試和無盡的實驗,雖然考到軟件工程和設計模式的話我全部都是懵的,不過上午題目覺得問題不大,而下午的就覺得比較懸了,感覺憑著一點老底子,有一半希望吧。(數據流圖,設計模式,軟件工程完全不會啊~~)

            3.考試周。昨天才考完,下半學期又要忙了,沒辦法,先緩緩吧。
            posted on 2010-05-29 00:53 deercoder 閱讀(1046) 評論(0)  編輯 收藏 引用 所屬分類: C++
            国产精品久久久久久久久软件| 国产精品免费久久| 久久久久免费看成人影片| 精品久久久久中文字幕日本| 久久91亚洲人成电影网站| 久久综合给合综合久久| 伊人久久精品无码av一区| 久久久久国产精品| 久久综合视频网| 国产精品va久久久久久久| 思思久久好好热精品国产| 色综合久久久久网| 一本一本久久a久久综合精品蜜桃| 精品久久人妻av中文字幕| 香蕉久久久久久狠狠色| 国产午夜精品久久久久九九电影| 久久久久亚洲av成人网人人软件 | 亚洲精品tv久久久久久久久久| 亚洲国产精品久久电影欧美| 精品久久久久中文字幕一区| 久久A级毛片免费观看| 久久笫一福利免费导航 | 丁香五月综合久久激情| 人妻丰满AV无码久久不卡| 亚洲欧洲久久久精品| 日韩精品无码久久一区二区三| 国产精品禁18久久久夂久 | 久久笫一福利免费导航| 久久免费国产精品| 久久毛片免费看一区二区三区| 伊人久久大香线焦综合四虎| 久久久久国产精品熟女影院| 青青草原综合久久大伊人| 欧美成a人片免费看久久| 久久人妻少妇嫩草AV蜜桃| 青青久久精品国产免费看| 亚洲国产精品嫩草影院久久| 欧美激情精品久久久久久| 性欧美大战久久久久久久| 久久影视综合亚洲| 中文字幕人妻色偷偷久久|