原创 2015校招 面試(軟件研發)

2014年9月1日,離開上海,9月2日,到濟南。在家待了幾天,9月9日,回校參加校招。9月18日,簽約。 9月9日-9月18日,共參加了華爲和中興兩家公司的筆試(機試)和麪試。 我應聘的崗位是:軟件研發工程師。 華爲:機試——技術面——綜

原创 C中字節對齊問題

好多筆試中,會考結構體的sizeof是多少,這就涉及到了字節對齊問題。(VC或GCC編譯器,默認按4字節對齊) 什麼叫字節對齊? 就是數據在內存中存放的方式,它存放的地址需要是它長度的整數倍。比如單字節放在什麼地址都可以,雙字節數據只能存

原创 nodejs return

function (err, doc) { if (err) return console.log(err); workWith(doc); } 比 function (err, doc) { if (err)

原创 信號量、互斥體和自旋鎖(信號量/互斥體和自旋鎖的區別)

一、信號量       信號量又稱爲信號燈,它是用來協調不同進程間的數據對象的,而最主要的應用是共享內存方式的進程間通信。本質上,信號量是一個計數器,它用來記錄對某個資源(如共享內存)的存取狀況。一般說來,爲了獲得共享資源,進程需

原创 Linux IIC驅動框架理解

看了一週的Linux IIC驅動框架,大概地瞭解了各個部分的功能,也大概知道了如果自己寫驅動的話,需要從哪寫起,只是還差了實踐這一步,也是最重要的一步,可是開發板目前還沒摸透,想着還是先總結一下吧,因爲接下來要學習DMA了。 想到哪寫到哪

原创 C中實參與形參的“值傳遞”只能“單向傳送”(透徹的理解)

今天又徹底地把這部分知識回顧了一下,好好地理解了一番。還是記下來比較靠譜,加深印象,省的以後再忘。 主調函數(比如main函數)中,調用函數(比如numpp函數)時,如果swap的參數在函數中改變了,那麼此參數必須是指針類型的。還是例子好

原创 malloc和new的區別

1.1 new 返回指定類型的指針,並且可以自動計算所需要大小。 比如:    1) int *p;    p = new int; //返回類型爲int* 類型(整數型指針),分配大小爲 sizeof(int);    或:   

原创 函數指針數組

首先說指針數組,就是說數組的成員都是指針。那函數指針數組呢,就是數組的成員都是指向函數的指針。 比如: 有兩個函數:int sub1(int x,int y)和int sub2(int x,int y) 有一個數組:int (*a[2])

原创 vs2005 C編譯錯誤syntax error : missing ';' before 'type'

在軟件vs2005中,代碼類型如下: void function(int x,int y) { int a,b; xxxx; int c; xxx; } 結果在int c這一行出現編譯錯誤, visual studio 20

原创 地址與常數的加減

地址與常數的加減不是簡單的加減,“地址+常數”的結果=地址值+常數*該指針類型所佔的字節數。 例子如下: int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d",*(ptr-1

原创 C語言中的#pragma pack()

這幾天生病了,還沒痊癒,估計要等到下週才能完全復工。 #pragma的用法爲: #pragma Pra  Pra是參數。 Pra有很多種,這裏只說一種。#pragma pack() 如: #progma pack (2) /*指定按2字節

原创 指針數組 數組指針

今天看到一個問題:int a[3][3];int **p;p=a;會不會有問題? 貌似覺得沒問題,還是知識的基礎和本質沒有掌握透徹的原因。 分析:二維數組實質上是數組的數組,可以退化爲數組的指針,但不是指針的指針。 比如:int a[3]

原创 realloc的全面解析

realloc也是在堆中開闢空間,但與普通的開闢空間不同。它用來擴大已經開闢好的空間。 用法爲: void *realloc(*mem_addr,unsigned int newsize) 含義是:(數據類型*)realloc(要擴大內存

原创 malloc、alloc與calloc

alloc是向棧申請內存,因此無需釋放。 malloc和calloc都是向堆動態申請,需要釋放。它們都是C庫函數,與OS無關。 malloc與calloc區別是:malloc不能初始化所分配的內存空間,calloc可以初始化。 1、mal

原创 sprintf比strcpy略勝一籌

今天看內核鏈表的代碼,其中有句: <span style="font-size:14px;">for(i=0;i<5;i++) { sprintf(pstudent[i].name,"student%d",i+1) ........