【C語言基礎】嵌入式面試經典題(C語言篇)----有新的內容會及時補充、更新!

📢:如果你也對機器人、人工智能感興趣,看來我們志同道合?
📢:不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸對你有幫助,可點贊 👍 收藏 ?不迷路🙉
📢:內容若有錯誤,敬請留言 📝指正!原創文,轉載請注明出處

文章目錄

  • 進程和線程有什么區別?
  • 程序的局部、全局變量存在于哪里,動態申請數據存在于哪里?
  • 靜態局部變量和全局變量的區別
  • 關鍵字const有什么作用?
  • 關鍵字static有什么作用?
  • 局部變量能否和全局變量重名?
  • Union和結構體之間的區別
  • 什么是指針?
  • 棧和堆的區別?
  • 什么是內存泄漏?
  • 單片機程序跑飛是什么意思?
  • 描述一下C語言從代碼到可執行程序的過程


進程和線程有什么區別?

答:進程是并發執行的程序在執行過程中分配和管理資源的基本單位。線程是進程的一個執行單元,是比進程還要小的獨立運行的基本單位。一個程序至少有一個進程,一個進程至少有一個線程。

程序的局部、全局變量存在于哪里,動態申請數據存在于哪里?

答:程序的局部變量存在于棧區;全局變量存在于靜態區;動態申請數據存在于堆區。

靜態局部變量和全局變量的區別

答:靜態局部變量的這種特性,和全局變量非常相似。他們的相同點都是創造和初始化一次,以后調用時值保持上次的不變。不同點在于作用域不同。

關鍵字const有什么作用?

答:用const定義的變量的值是不允許改變的,即不允許給它重新賦值,即使是賦相同的值也不可以。所以說它定義的是只讀變量,這也就意味著必須在定義的時候就給它賦初值。

關鍵字static有什么作用?

答:在C語言中,關鍵字static有三個明顯的作用:

  1. 在函數體,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。
  2. 在模塊內(但在函數體外),一個被聲明為靜態的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變量。
  3. 在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地范圍內使用。

局部變量能否和全局變量重名?

答:能,局部會屏蔽全局。
局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。
對于有些編譯器而言,在同一個函數內可以定義多個同名的局部變量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環體內。

Union和結構體之間的區別

答:結構體類似于一個包裹,結構體中的成員彼此是獨立存在的,分布在內存的不同單元中,他們只是被打包成一個整體叫做結構體而已;共用體中的各個成員其實是一體的,彼此不獨立,他們使用同一個內存單元。可以理解為:有時候是這個元素,有時候是那個元素。更準確的說法是同一個內存空間有多種解釋方式。

什么是指針?

答:指針的實質就是個變量,它跟普通變量沒有任何本質區別。指針完整的名字應該叫指針變量,簡稱為指針。指針的出現是為了實現CPU間接訪問內存地址。

棧和堆的區別?

答:棧區別于堆,它是自主管理內存的;堆管理內存分配靈活,按需分配,也就是程序手動申請&釋放:手工意思是需要寫代碼去申請malloc和釋放free。各進程可以按需申請使用,使用完釋放。大的進程放入到堆內存中,小的進程放入棧中,兩種的特征決定了處理不同的進程。
1.申請方式不同。棧的空間由操作系統自己分配和釋放,堆上的空間手動分配和釋放。
2.申請效率不同。棧由系統自動分配,速度較快,但程序員是無法控制的。堆是由new分配的內存,一般速度較慢,而且容易產生內存碎片,不過用起來最方便。
3.申請大小不同。棧空間有限。在Windows下,棧是向低地址擴展的數據結構,是一塊連續的內存的區域。這句話的意思是棧頂的地址和棧的最大容量是系統預先規定好的,在WINDOWS下,棧的大小是2M(也有的說是1M,總之是一個編譯時就確定的常數),如果申請的空間超過棧的剩余空間時,將提示overflow。因此,能從棧獲得的空間較小
堆是很大的自由存儲區。堆是向高地址擴展的數據結構,是不連續的內存區域。這是由于系統是用鏈表來存儲的空閑內存地址的,自然是不連續的,而鏈表的遍歷方向是由低地址向高地址。堆的小受限于計算機系統中有效的虛擬內存。由此可見,堆獲得的空間比較靈活,也比較大。

什么是內存泄漏?

答:在調用free歸還(釋放)這段內存之前,指向這段內存的指針p一定不能丟(也就是不能給p另外賦值)。因為p一旦丟失,這段malloc申請來的內存就永遠的丟失了(內存泄漏),直到當前程序結束時操作系統才會回收這段內存。

單片機程序跑飛是什么意思?

答:"單片機程序跑飛"是指由于某些異常情況,使得單片機的程序執行流程脫離預設的正常路徑,導致系統運行不正常。這種現象可能有多種表現,例如:單片機系統不停地重啟,無法進入正常工作狀態。

一個常見的原因是數組越界(數組溢出),即函數中定義的數組元素的個數小于程序中實際使用的數組元素的個數。另一個可能的原因是外部干擾,比如電磁干擾等,這可能導致程序計數器PC的值發生非預期的變化,從而使程序的流向指向不確定區域。

描述一下C語言從代碼到可執行程序的過程

答:一個C語言程序,從代碼到可執行程序的過程需要四個步驟:預處理,編譯 ,匯編,鏈接。

1.預處理
預處理負責對源代碼進行文本處理。主要處理代碼中以字符#開頭的命令。
2. 編譯
編譯期間也要經過多個步驟,由.i的文本文件生成.s的文本文件。此文件為以匯編語句完成的代碼
3.匯編
經過匯編階段把匯編語句轉換為機器指令,由.s的文本文件生成.o的二進制文件。
4.鏈接
鏈接器將所有二進制的目標文件和系統組件組合成一個可執行文件(.exe)。 (需要注意的是,我們在編譯器是針對源文件進行編譯的并且每個源文件都只會編譯一次,所以匯編結束后每個源文件都會生成一個.o文件,這里的目標文件就是這些.o文件。)

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212969.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212969.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212969.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mac虛擬機CrossOver23破解版下載和許可證下載

CrossOver Mac Mac 和 Windows 系統之間的兼容工具。使 Mac 操作系統的用戶可以運行 Windows 系統的應用,從辦公軟件、實用工具、游戲到設計軟件, 您都可以在 Mac 程序和 Windows 程序之間隨意切換。 系統要求 運行macOS的基于Intel或Apple Silicon 的…

springboot項目加載配置文件失敗

問題 在使用springboot打成jar以后,需要文件加載一個redisson-cluster的配置文件。配置文件是在jar的同級目錄。啟動時卻總是加載jar中的配置文件,而外部配置文件卻不加載看下配置:spring:redis:redisson:# redis配置位置file: classpath:red…

lcx iptables rinetd 三個端口轉發流量分析

lcx流量分析 環境搭建 本機 :192.168.0.52 win7 : 192.168.0.247 10.0.0.3 win10: 10.0.0.10 win7 Lcx.exe -listen 7777 4444win10 Lcx.exe -slave 10.0.0.3 7777 127.0.0.1 3389然后使用遠程軟件連接 連的是192.168.0.247的4444 端口 …

基于Pytorch框架深度學的垃圾分類智能識別系統

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 垃圾分類智能識別系統是一種基于深度學習技術的智能系統,用于對垃圾進行分類和識別。它使用Pytorch框架…

【電路筆記】-壓敏電阻

壓敏電阻 文章目錄 壓敏電阻1、概述2、交流波形瞬變3、抗靜電能力4、特性曲線5、壓敏電阻電容值6、金屬氧化物壓敏電阻7、壓敏電阻應用8、總結 壓敏電阻是一種無源兩端固態半導體器件,用于為電氣和電子電路提供保護。 1、概述 與提供過電流保護的保險絲或斷路器不同…

Redis高效恢復策略:內存快照與AOF

第1章:Redis宕機恢復的重要性和挑戰 大家好,我是小黑。今天咱們來聊聊Redis宕機后的恢復策略。想象一下,你的網站突然宕機了,所有的數據都飄了,這種情況下,快速恢復數據就顯得尤為重要。Redis作為一個高性…

Python---自定義模塊

1、什么是自定義模塊 在Python中,模塊一共可以分為兩大類:內置系統模塊 和 自定義模塊 模塊的本質:在Python中,模塊的本質就是一個Python的獨立文件(后綴名.py),里面可以包含全局變量、函數以…

大廠算法指南:優選算法 ——雙指針篇(下)

大廠算法指南:優選算法 ——雙指針篇(上) 前言:雙指針簡介一、[611. 有效三角形的個數](https://leetcode.cn/problems/valid-triangle-number/)1.1 算法思路(排序 雙指針)1.2 代碼實現 二、[LCR 179. 查找…

[GPT]Andrej Karpathy微軟Build大會GPT演講(下)--該如何使用GPT助手

該如何使用GPT助手--將GPT助手模型應用于問題 現在我要換個方向,讓我們看看如何最好地將 GPT 助手模型應用于您的問題。 現在我想在一個具體示例的場景里展示。讓我們在這里使用一個具體示例。 假設你正在寫一篇文章或一篇博客文章,你打算在最后寫這句話。 加州的人口是阿拉…

佳明(Garmin) fēnix 7X 增加小睡檢測功能

文章目錄 (一)零星小睡(二)小睡檢測(三)吐槽佳明(3.1)心率檢測(3.2)光線感應器(3.3)手表重量(3.4)手表續航 &a…

保姆級 | XSS Platform環境搭建

0x00 前言 XSS Platform 平臺主要是用作驗證跨站腳本攻擊。該平臺可以部署在本地或服務器環境中。我們可以使用 XSS Platfrom 平臺搭建、學習或驗證各種類型的 XSS 漏洞。 0x01 環境說明 HECS(云耀云服務器)xss platformUbuntu 22.04Nginx 1.24.0MySQL 5.6.51Pure-Ftpd 1.0.49…

最新接口自動化測試面試題

前言 前面總結了一篇關于接口測試的常規面試題,現在接口自動化測試用的比較多,也是被很多公司看好。那么想做接口自動化測試需要具備哪些能力呢? 也就是面試的過程中,面試官會考哪些問題,知道你是不是真的做過接口自…

大數據面試總結 二

1、事實表主要分成幾種: 1、事務事實表:又稱作原子事實表,主要是用來描述業務過程,跟蹤控件或者時間上某點的度量事件,保存的是最原子的數據 2、周期事實表:以一個周期作為一個時間間隔,用來記…

2021版吳恩達深度學習課程Deeplearning.ai 05序列模型 12.5

學習內容 05.序列模型 1.1 為什么用序列模型 1.序列模型常見的應用 1.2 注釋 notation 1.*T_x(i)表示訓練樣本x(i)的序列長度,T_y(i)表示target(i)的序列長度2.訓練集表示單詞的方式*構建字典的方式*在訓練集中查找出現頻率最高的單詞*網絡搜集常用字典3.如果遇…

【C語言快速學習基礎篇】之一基礎類型、進制轉換、數據位寬

文章目錄 一、基礎類型(根據系統不同占用字節數會有變化)1.1、有符號整形1.2、無符號整形1.3、字符型1.4、浮點型1.5、布爾型 二、進制轉換2.1、二進制2.2、八進制2.3、十進制2.4、十六進制2.5、N進制2.6、進制轉換關系對應表 三、數據位寬3.1、位3.2、字節3.3、字3.4、雙字3.5…

程序員常用英文單詞

英語對于程序員來說多么重要應該無需過多解釋了,把近期在網上收集到的分享到這里供大家學習交流。 PS:感謝原作者的收集,謝謝。 A abstract 抽象的 abstract base class (ABC) 抽象基類abstract class 抽象類 abstraction 抽象、抽象物、抽象…

【數據結構高階】紅黑樹

目錄 一、紅黑樹的概念 二、紅黑樹的性質 2.1 紅黑樹與AVL樹的比較 三、紅黑樹的實現 3.1 紅黑樹節點的定義 3.2 數據的插入 3.2.1 紅黑樹的調整思路 3.2.1.1 cur為紅,f為紅,g為黑,u存在且為紅 3.2.1.2 cur為紅,f為紅&am…

【重點】【LCA】236. 二叉樹的最近公共祖先

題目 class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if (root null || root p || root q) {return root;}TreeNode left lowestCommonAncestor(root.left, p, q);TreeNode right lowestCommonAncestor(root.right, p, …

【重點】【DFS】124.二叉樹中的最大路徑和

題目 和求二叉樹直徑相同套路 class Solution {private int max Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {if (root null) {return 0;}dfs(root);return max;}// 返回經過root的單邊分支最大和public int dfs(TreeNode root) {if (root null) {return 0;}…