<strike id="6q0um"></strike>
  • <strike id="6q0um"><s id="6q0um"></s></strike>
  • <ul id="6q0um"></ul><strike id="6q0um"></strike>

    當前位置:高考升學網 > 招聘筆試題 > 正文

    貢獻一套ios筆試題和面試題答案

    更新:2023-09-14 14:20:12 高考升學網

      今天大學高考小編貢獻給大家的是一套ios筆試題,如果你也感興趣,歡迎大家收藏和分享。
      1.main()

      {

      int a[5]={1,2,3,4,5};

      int ptr=(int )(&a+1);

      printf(“%d,%d”,(a+1),(ptr-1));

      }

      答:2,5

      (a+1)就是a,(ptr-1)就是a[4],執行結果是2,5

      &a+1不是首地址+1,系統會認為加一個a數組的偏移,是偏移了一個數組的大小(本例是5個int)

      int ptr=(int )(&a+1);

      則ptr實際是&(a[5]),也就是a+5

      原因如下:

      &a是數組指針,其類型為 int ()[5];

      而指針加1要根據指針類型加上一定的值,不同類型的指針+1之后增加的大小不同。

      a是長度為5的int數組指針,所以要加 5sizeof(int)

      所以ptr實際是a[5]

      但是prt與(&a+1)類型是不一樣的(這點很重要)

      所以prt-1只會減去sizeof(int)

      a,&a的地址是一樣的,但意思不一樣

      a是數組首地址,也就是a[0]的地址,&a是對象(數組)首地址,

      a+1是數組下一元素的地址,即a,&a+1是下一個對象的地址,即a[5].

      2.以下為Windows NT下的32位C++程序,請計算sizeof的值

      void Func ( char str[100] )

      {

      sizeof( str ) = ?

      }

      void p = malloc( 100 );

      sizeof ( p ) = ?

      這 題很常見了,Func ( char str[100] )函數中數組名作為函數形參時,在函數體內,數組名失去了本身的內涵,僅僅只是一個指針;在失去其內涵的同時,它還失去了其常量特性,可以作自增、自減等 操作,可以被修改。Windows NT 32位臺下,指針的長度(占用內存的大小)為4字節,故sizeof( str ) 、sizeof ( p ) 都為4。

      3.還是考指針,不過我對cocoa的代碼還是不太熟悉

      大概是這樣的

      - (void)getNSString(ct NSString inputString)

      {

      inputString = @”This is a main test\n”;

      return ;

      }

      -main(void)

      {

      NSString a=@”Main”;

      NSString aString = [NSString stringWithString:@"%@",getNSString(a)];

      NSLog(@”%@\n”, aString);

      }

      最后問輸出的字符串:NULL,output在函數返回后,內存已經被釋放。

      4.用預處理指令#define聲明一個常數,用以表明1年中有多少秒(忽略閏年問題)

      #define SECONDS_PER_YEAR (60 60 24 365)UL

      我在這想看到幾件事情:

      •; #define 語法的基本知識(例如:不能以分號結束,括號的使用,等等)

      •; 懂得預處理器將為你計算常數表達式的值,因此,直接寫出你是如何計算一年中有多少秒而不是計算出實際的值,是更清晰而沒有代價的。

      •; 意識到這個表達式將使一個16位機的整型數溢出-因此要用到長整型符號L,告訴編譯器這個常數是的長整型數。

      •; 如果你在你的表達式中用到UL(表示無符號長整型),那么你有了一個好的起點。記住,第一印象很重要。

      寫一個“標準“宏MIN

      ,這個宏輸入兩個參數并返回較小的一個。

      #define MIN(A,B)

      ((A) <= (B) ? (A) : (B))

      這個測試是為下面的目的而設的:

      •;

      標識#define在宏中應用的基本知識。這是很重要的,因為直到嵌入(inline)操作符變為標準C的一部分,宏是方便產生嵌入代碼的唯一方

      法,對于嵌入式系統來說,為了能達到要求的性能,嵌入代碼經常是必須的方法。

      •; 三重條件操作符的知識。這個操作符存在C語言中的原因是它使得編譯器能產生比 if-then-else

      更優化的代碼,了解這個用法是很重要的。

      •; 懂得在宏中小心地把參數用括號括起來

      •;

      我也用這個問題開始討論宏的副作用,例如:當你寫下面的代碼時會發生什么事?

      least = MIN(p++, b);

      結果是:

      ((p++) <= (b) ? (p++) : (p++))

      這個表達式會產生副作用,指針p會作三次++自增操作。

      5.寫一個委托的interface

      @protocol MyDelegate;

      @interface MyClass: NSObject

      {

      id delegate;

      }

      // 委托方法

      @protocol MyDelegate

      - (void)didJobs:(NSArray )args;

      @end

      6.寫一個NSString類的實現

      + (id)initWithCString:(ct char )nullTerminatedCString encoding:(NSStringEncoding)encoding;

      + (id) stringWithCString: (ct char)nullTerminatedCString

      encoding: (NSStringEncoding)encoding

      {

      NSString obj;

      obj = [self allocWithZone: NSDefaultMallocZone()];

      obj = [obj initWithCString: nullTerminatedCString encoding: encoding];

      return AUTORELEASE(obj);

      }

      7.obj-c有多重繼承么?不是的話有什么替代方法?

      cocoa 中所有的類都是NSObject 的子類

      多繼承在這里是用protocol 委托代理 來實現的

      你不用去考慮繁瑣的多繼承 ,虛基類的概念.

      ood的多態特性 在 obj-c 中通過委托來實現.

      要注意的是Objective-c只支持單繼承,如果要實現多繼承的話,可以通過類別和協議的方式來實現。

      8.obj-c有私有方法么?私有變量呢

      objective-c – 類里面的方法只有兩種, 靜態方法和實例方法. 這似乎就不是完整的面向對象了,按照OO的原則就是一個對象只暴露有用的東西. 如果沒有了私有方法的話, 對于一些小范圍的代碼重用就不那么順手了. 在類里面聲名一個私有方法

      @interface Controller : NSObject { NSString something; }

      + (void)thisIsAStaticMethod;

      - (void)thisIsAnInstanceMethod;

      @end

      @interface Controller (private) -

      (void)thisIsAPrivateMethod;

      @end

      @private可以用來修飾私有變量

      在Objective‐C中,所有實例變量默認都是私有的,所有實例方法默認都是公有的

      9.關鍵字ct有什么含意?修飾類呢?static的作用,用于類呢?還有extern c的作用

      ct意味著”只讀”,下面的聲明都是什么意思?

      ct int a;

      int ct a;

      ct int a;

      int ct a;

      int ct a ct;

      前 兩個的作用是一樣,a是一個常整型數。第三個意味著a是一個指向常整型數的指針(也就是,整型數是不可修改的,但指針可以)。第四個意思a是一個指向整型 數的常指針(也就是說,指針指向的整型數是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數的常指針(也就是說,指針指向的整型數 是不可修改的,同時指針也是不可修改的)。

      結論:

      •; 關鍵字ct的作用是為給讀你代碼的人傳達非常有用的信息,實際上,聲明一個參數為常量是為了告訴了用戶這個參數的應用目的。如果

      你曾花很多時間清理其它人留下的垃圾,你就會很快學會感謝這點多余的信息。(當然,懂得用ct的程序員很少會留下的垃圾讓別人來清

      理的。)

      •; 通過給優化器一些附加的信息,使用關鍵字ct也許能產生更緊湊的代碼。

      •; 合理地使用關鍵字ct可以使編譯器很自然地保護那些不希望被改變的參數,防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現。

      (1)欲阻止一個變量被改變,可以使用 ct 關鍵字。在定義該 ct 變量時,通常需要對它進行初

      始化,因為以后就沒有機會再去改變它了;

      (2)對指針來說,可以指定指針本身為 ct,也可以指定指針所指的數據為 ct,或二者同時指

      定為 ct;

      (3)在一個函數聲明中,ct 可以修飾形參,表明它是一個輸入參數,在函數內部不能改變其值;

      (4)對于類的成員函數,若指定其為 ct 類型,則表明其是一個常函數,不能修改類的成員變量;

      (5)對于類的成員函數,有時候必須指定其返回值為 ct 類型,以使得其返回值不為“左值”。

      關鍵字volatile有什么含意?并給出三個不同的例子。

      一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到

      這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個例子:

      •; 并行設備的硬件寄存器(如:狀態寄存器)

      •; 一個中斷服務子程序中會訪問到的非自動變量(Non-automatic variables)

      •; 多線程應用中被幾個任務共享的變量

      •; 一個參數既可以是ct還可以是volatile嗎?解釋為什么。

      •; 一個指針可以是volatile 嗎?解釋為什么。

    下面是答案:

    最新圖文

    2020年河北新聞網兩學一做

    時間:2023-09-18 07:0:24

    2020年河北新聞網兩學一做

    時間:2023-09-15 11:0:59

    兩學一做學習教育知

    時間:2023-09-21 06:0:30

    2020年開展兩學一做學習教

    時間:2023-09-19 21:0:30
    国产婷婷综合丁香亚洲欧洲| 亚洲国产精品SSS在线观看AV | 亚洲乱码中文论理电影| 无码久久精品国产亚洲Av影片| 久久久久久亚洲精品不卡| MM1313亚洲国产精品| 久久精品国产亚洲AV电影网| 亚洲国产美女精品久久久| 亚洲Av永久无码精品一区二区| 亚洲变态另类一区二区三区 | 亚洲熟女少妇一区二区| 国产AV无码专区亚洲AV手机麻豆| 亚洲最大av无码网址| 国产亚洲精品国看不卡| 亚洲精品黄色视频在线观看免费资源| 亚洲国产成人五月综合网| 亚洲视频在线精品| 国产亚洲精品成人AA片新蒲金| 亚洲乱码国产乱码精品精| 亚洲国产精彩中文乱码AV| 久久亚洲高清观看| 亚洲日本中文字幕| 亚洲国产精品人久久电影 | 国产午夜亚洲精品理论片不卡 | 亚洲一区二区视频在线观看| 狠狠亚洲婷婷综合色香五月排名| 亚洲中文字幕日产乱码高清app| 亚洲AV中文无码字幕色三| 亚洲天堂中文字幕| 亚洲专区一路线二| 亚洲人成未满十八禁网站| 国产精品亚洲专区在线播放| 亚洲中文字幕成人在线| 国产偷v国产偷v亚洲高清| 亚洲一区二区三区夜色| 亚洲一区无码中文字幕乱码| 亚洲欧美日韩综合俺去了| 亚洲成网777777国产精品| 国产亚洲人成无码网在线观看| 亚洲综合无码一区二区| 亚洲综合中文字幕无线码|