亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言面試題有哪些

發布時間:2021-11-22 15:28:24 來源:億速云 閱讀:136 作者:iii 欄目:大數據

本篇內容主要講解“C語言面試題有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言面試題有哪些”吧!

1、描述一下兩個語句的區別:

 char *p="hello";
 char  p[]="hello";

答案:

        (1)、char *p 代表指針 p 是一個指向字符常量的指針,指向一個常量區域,所以的話,就不能去修改內存里面的內容了,如果比如說采用 p[0]='F',這樣的話編譯器會報錯。

         (2)、char p[] 中的 p 是一個被分配在一個可讀可寫內存中的字符數組的首地址,就可以改變數組上的內容。

2、當一個函數中返回一個局部變量的指針時(如下面的例子),會發生什么問題?

void GetString()
{
    char p[] = "hello world";
    return p;
}

答案:

        (1)局部數組所占用的內存空間是由編譯器分配在棧中的,當函數返回時,這些被占用的棧空間將被編譯器添加的代碼進行退棧操作,這時原來存放在棧中的數據就統統變成了無效數據了。因此,返回出去的指針將指向一塊無效的棧空間,任何通過這個指針對其所指向的內容的訪問都是無效(數據可能已經被后續的棧操作所改變)和危險的(通過這個指針所寫入的數據有可能沖掉后續棧操作壓人的有效數據)。

3、c語言里面使用volatil關鍵字來修飾變量,請說明它的用法以及常用用法?

答案:

        (1) volatile 的作用是告訴編譯器,它修飾的變量隨時都可能被改變,因此,編譯后的程序每次在使用該變量的值時,都會從該變量的地址中讀取數據,而不是從寄存器中獲取(換句話來理解就是,一個定義為 volatile 的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份)。下面舉個例子,比較容易出錯:

 int square(volatile int *p)
 {
      return (*p) * (*p)
 }

這里的話,是想計算指針 p 所指向內存的值的平方,但是這里使用了 volatile ,可能的話就達不到你要的結果了,我們可以換種寫法更加直接明了:

 int square(volatile int *p)
 {
      int a,b;
      a=*p;
      b=*p;

     return a * b;
 }

正確的寫法可以參考這個:

 int square(volatile int *p)
 {
      int a;
      a=*p;

     return a * a;
 }

小結:這個關鍵字的反面使用,就是不希望改變,可以使用關鍵字 const 的用法,有關 const 的用法,讀者可以看看自己掌握了多少?

        (2)、它的常見用法:

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

  • 一個中斷服務子程序中會訪問到的非自動變量。

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

到此,相信大家對“C語言面試題有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

察雅县| 呈贡县| 阿合奇县| 龙门县| 石柱| 汝南县| 津市市| 竹山县| 娄底市| 松原市| 鹤岗市| 金阳县| 亳州市| 凤翔县| 乡城县| 锡林浩特市| 乌恰县| 新兴县| 长子县| 临澧县| 麻栗坡县| 锡林浩特市| 盈江县| 南投县| 罗山县| 巧家县| 兰溪市| 宿迁市| 云霄县| 济阳县| 瑞金市| 公主岭市| 通化市| 杭锦后旗| 红桥区| 岑巩县| 石城县| 彰化市| 鹰潭市| 印江| 绥芬河市|