C語言一些不常用的函式和巨集定義說明

2021-09-24 18:24:04 字數 2043 閱讀 6706

一、陣列清空

# include # include int main(void)

; for (j=0; j<10; ++j)

printf("\n");

memset(str, 0, sizeof(str)); //陣列清空

for (i=0; i<500; ++i)

}

二、char型別轉換int型別

#include //需要標頭檔案stdlib.h

#include int main()

; int x=0;

x= atoi(a); //char型別123轉換int型別123

printf("%d",x); //此時x為123

}

三、把陣列元素裡面的值賦值給另一陣列
#include #include void main()

;

strcpy(a,b); //strcpy中前乙個陣列的長度要大於或等於後面陣列的長度

printf("%s\n",a); //此時列印a的值就是abcde

}

四、字串擷取

#include #include int main()

; char src = ;

strncpy(dest, src+5, 5); //從第五個位元組開始的五個位元組長度

printf ("%s",dest); //輸出67890

}

五、51系列微控制器中data idata xdata pdata的區別和 bit sbit區別

data:固定指前面0x00-0x7f的128個ram,可以用acc直接讀寫的,速度最快,生成的**也最小。

idata:固定指前面0x00-0xff的256個ram,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似c中的指標方式 訪問的。彙編中的語句為:mox acc,@rx。

xdata:外部擴充套件ram,一般指外部0x0000-0xffff空間,用dptr訪問。

pdata:外部擴充套件ram的低256個位元組,位址出現在a0-a7的上時讀寫,用movx acc,@rx讀寫。這個比較特殊,而且c51好象有對此bug, 建議少用。但也有他的優點,具體用法屬於中級問題。

code :程式儲存區(64kb),

data :可直接定址的內部資料儲存區(128b)

idata:不可直接定址的內部資料儲存區(256b)

bdata:可位定址內部資料儲存區(16b)

xdata:外部資料儲存區(64kb)

pdata:分頁的外部資料儲存區

bit和int char之類的差不多,只不過char=8位, bit="1位而已"。

bit和sbit都是c51擴充套件的變數型別。

sfr(特殊功能暫存器)的bit。sfr是系統指定的記憶體位址。

bit 可以在外部或內部定義。

bit 動態分配的,有編譯器來指定記憶體位址。

bit 是編譯器在的可定址區分配的乙個位變數,是不定的,不是絕對位址目標。

sbit 只能在外部定義全域性變數。

sbit大部分是用在暫存器中的,方便對暫存器的某位進行操作的。

sbit位暫存器是可位定址的絕對位址目標,定義後編譯器是不會改變位置的。

sbit 要在最外面定義,就是說必須定義成外部變數.sbit定義的是sfr(特殊功能暫存器)的bit

sbit 更像是型別定義,不像是變數定義。

sbit是對應可位定址空間的乙個位,可位定址區:20h~2fh。

一旦用了sbi *** = rege^6這樣的定義,這個sbit量就確定位址了。

六、stm32f103c8t6暴力延時函式

void delay_ms(u32 ms)

void delay_us(u32 us)

C語言中的一些巨集定義和常用的函式

如果你是 c 程式設計師,應該接觸過 c 11 裡的decltype操作符,它的作用是自動推導表示式的資料型別,以解決泛型程式設計中有些型別由模板引數決定而難以 甚至不可能 表示的問題。其實這個特性在 c 語言中也早有類似的實現,gnu c 標準中的乙個擴充套件特性typeof 作用與 declty...

OC一些不常用的函式

int rand 隨機數生成。intabs int a 整數的絕對值,abs 10 結果為10 double fabs double a double型別的絕對值,fabs 3.14 結果為3.140000 double fabsf float a fabsf型別的絕對值,fabsf 3.14 結果...

C語言巨集定義的一些用法

do while 0 在巨集定義中合理使用do while 0 可以更規範地使用巨集定義 沒有使用do while 0 前 define led on int main void 多了個分號 使用do while 0 define led on dowhile 0 int main void whi...