嵌入式面試題C語言(一)陣列一道面試題
這道題在工作中實際程式設計很少能遇到,至少我沒有涉及到,但是低於陣列指標其實是一種深入理解或者說另一種思考的角度,這是一道面試題:
int a[] = {1,2,3,4,5,6,7};
1.printf(“a[5] is %d\n”, a[5]);
2.printf(“5[a] is %d\n”, 5[a]);
這就是考題 這裡直接給出結果 6 ,6
在我試驗輸出這個結果的時候其實我還是不理解,按照我的想法1輸出6正常,但是2不應該啊,我當時想a是資料地址那麼5[a],實際應該是一個不確定的記憶體資料才對,然後我再網上找到類似這道題解釋如下:
陣列a[5],可以解析為*(a+5),也就是基址 + 偏移量(這樣理解的話a[5]和5[a]實際是一樣)
a[5] ==> *(a+5)
||
5[a] ==> *(5+a)
我當時是從陣列角度來理解這個問題,實際要是結合指標地址角度結合理解才是本質
相關推薦
嵌入式面試題C語言(一)陣列一道面試題
這道題在工作中實際程式設計很少能遇到,至少我沒有涉及到,但是低於陣列指標其實是一種深入理解或者說另一種思考的角度,這是一道面試題: int a[] = {1,2,3,4,5,6,7}; 1.printf(“a[5] is %d\n”, a[5]); 2.printf(“5[a] is
C語言-----一維陣列
一維陣列的建立,初始化,使用。 (一)一維陣列的建立 陣列:一組相同型別元素的集合 定義一維陣列的形式:型別符 陣列名[常量表達式] (1)常量表達式用來求陣列元素的個數,即陣列長度。如a[10],表示該陣列中有10個元素,分別為a[0],a[1],a[2],a[3],a[4],a[5]
嵌入式c語言基礎 --陣列與指標
嵌入式c語言基礎 1.指標與陣列 指標是一種變數的型別,存放某一元素的地址 指標獲取陣列中的值 #include <stdio.h> int main(void) { int a = 10; int *p = &a;
C語言用陣列1. 簡單約瑟夫環問題: N個人,編號從1~N圍成一圈,輸入一個數T,從1號開始報數,報到T的人出圈;下一人又從1開始報數,下一個報到T的人出圈,輸出出圈順序。 考慮問實現約瑟夫環問題
1. 簡單約瑟夫環問題: N個人,編號從1~N圍成一圈,輸入一個數T,從1號開始報數,報到T的人出圈;下一人又從1開始報數,下一個報到T的人出圈,輸出出圈順序。 考慮問題: 報到T的人出圈,怎麼表示出圈?要麼刪除對應的標號,其他的標號前移(如果是陣列結構,要依次移動
C語言一維陣列&&二維陣列練習
哥們今天剛學習了C語言的陣列,就課後作業幾道小練習,拿給大家分享一下,程式碼肯定不夠簡潔,不過思路大致沒錯,Seeking advice!!!! /* 輸入6個人的成績(各不相同),打印出最大
資料結構學習之路(一)C語言對陣列的簡單實現
以下的程式只是在觀看郝斌老師講解的(C語言資料結構)之後自己做得簡單練習。# include <stdio.h> # include <stdlib.h> typedef struct MyArray{ int * pBase; //存放陣列第一個
C語言在陣列中插入一個數,升序降序
#include <stdio.h> int main(int argc, const char *argv[]) { int num[20]; int cnt =0; int n; for(int i=0 ;i < 20
c語言一維陣列的定義、初始化
一維陣列 1、定義:是一組具有相同資料型別的有序元素集合。 2、初始化: (1)、初始化方式一: //陣列的定義: int a[length]; //這是陣列的定義 //可以使用for迴圈進行遍歷初始化 for (int i =
C語言--一堆陣列的定義和初始化
陣列: 1.定義陣列: #include <stdio.h> int main() { //這個只表示有十
C語言一維陣列的定義和引用
一維陣列的定義方式 在C語言中使用陣列必須先進行定義。一維陣列的定義方式為: 型別說明符 陣列名 [常量表達式]; 其中,型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。方括號中的常量表達式表示資料元素的個數,也稱為陣列的長度
c語言一,二數組
alt 困難 輸入a src 目的 [] 3.2 整形 1.4 一、PTA實驗作業 題目1:7-4 簡化的插入排序 1. 本題PTA提交列表 2. 設計思路 1.定義整形變量N,temp,i. 2.輸入N 3.通過for(i=1;i<=N;i++)的循環語句來輸入數
嵌入式LInux之C語言提升篇---Skr Skr Up Up
任務 開發者 三目運算 關鍵字const 此外 mat 庫函數 linu 限制 嵌入式C語言提升 致敬:每一個奮鬥的人! Up Up UpC語言常見編譯錯誤1.預處理錯誤 -E 1-1 找不到源文件錯誤 自己定義頭文件 使用 “xxx.
C語言柔性陣列講解
#include<stdio.h> typedef struct _SoftArray{ int len; int array[]; }SoftArray; int main() { int len = 10; printf("The struct's
C語言二級陣列和二級指標
轉載部落格:https://www.cnblogs.com/zou107/p/4909847.html 一、關於二維陣列和二維陣列區別 (1)一維陣列在記憶體中是連續分佈儲存的,同樣,二維陣列也是在記憶體連續儲存的。所以從記憶體的角度來分析,一維陣列和二維陣列其實沒有本質區
c語言 一個數的二進位制位的倒位
在32位計算機中儲存一個int型別的整形數時是按照二進位制的的32個位元為儲存的,例如"25"儲存時儲存的是“00000000 00000000 00000000 00011001”,而將其二進位制數到位得到的是“11001000 00000000 0000
C語言利用陣列和檔案登入註冊功能
C語言利用檔案系統實現簡單的使用者登入和註冊功能 版本一:利用陣列 最近有個朋友讓我幫他做一個C語言的登入註冊功能,考慮到他沒有學到資料庫於是想到了存入檔案 此版本使用的陣列,第二個版本使用的是連結串列,連結串列是一個很好的資料結構,推薦大家用連結串列 第二版連結可以去我
C語言:一個數組中只有兩個數字是出現一次
1 //1.一個數組中只有兩個數字是出現一次, 2 //其他所有數字都出現了兩次。 3 //找出這兩個數字,程式設計實現。a 4 5 //^=單獨兩個數的^結果 6 //單獨出現的兩個數不同位的標記 7 //position: ^結果中第一個出現1的位置 8 //position位
c語言-指標陣列
指標 記憶體和地址怎麼理解呢? 機器中有一些位置,每一個位置被稱為【位元組】/byte,許多現代機器上,每個位元組包含8個位。更大記憶體單位【字】,通常包含2個或4個位元組組成。 一個字包含4個位元組,它的地址是什麼? 他仍然只有一個地址,是最左邊還是最右邊的那個位元組的位置,取
C語言實現陣列的迴圈右移
#include <stdio.h> #include <stdlib.h> #define N 100 int main() { int i, j, x[N], a, b; printf("請輸入你想右移的數字
C語言中陣列使用負數值的標記
·引 對陣列的認知 在c語言中,我們經常使用的一個結構便是陣列,在最開始學習陣列的時候,它被描述成這樣(以一維二維陣列為例):一維陣列是若干個數連續排列在一起的集合,我們可以通過0-N的標記(N為陣列的長度)來訪問每一個元素。二維陣列則是一維陣列的集合。所以在最開始我們對二維陣列的概念是這樣的: 然後