C C 和指標 printf 的那些事

2021-07-04 20:04:04 字數 2129 閱讀 2809

一,printf

1)作用:產生格式化輸出的函式(定義在 stdio.h 中)。

2)用法:int printf(const char *format,[argument]);

format 引數輸出的格式,定義格式為:%[flags] [width] [.perc] [f|n|h|l] type  

規定資料輸出方式,具體如下:

1.type 含義如下:

d 有符號10進製整數

i 有符號10進製整數

o 無符號8進製整數

u 無符號10進製整數

x 無符號的16進製制數字,並以小寫abcdef表示

x 無符號的16進製制數字,並以大寫abcdef表示

f 浮點數

e/e 用科學表示格式的浮點數

g 使用%f和%e表示中的總的位數表示最短的來表示浮點數 g 同g格式,但表示為指數

c 單個字元

s 字串

s wchar_t字元(寬字元)型別字串

% 顯示百分號本身

p 顯示乙個指標,near指標表示為:***x

far 指標表示為:***x:yyyy

n 相連參量應是乙個指標,其中存放已寫字元的個數

2.flags 規定輸出格式,取值和含義如下:

無 右對齊,左邊填充0和空格

- 左對齊,右邊填充空格

+ 在數字前增加符號 + 或 -

0 將輸出的前面補上0,直到佔滿指定列寬為止(不可以搭配使用-)

空格 輸出值為正時冠以空格,為負時冠以負號

# 當type=c,s,d,i,u時沒有影響

type=o,x,x時,分別在數值前增加'0',"0x","0x"

type=e,e,f時,總是使用小數點

type=g,g時,除了數值為0外總是顯示小數點

3.width 用於控制顯示數值的寬度,取值和含義如下

n(n=1,2,3...) 寬度至少為n位,不夠以空格填充

0n(n=1,2,3...) 寬度至少為n位,不夠左邊以0填充

* 格式列表中,下乙個引數還是width

4.prec 用於控制小數點後面的位數,取值和含義如下:

無 按預設精度顯示

0 當type=d,i,o,u,x時,沒有影響

type=e,e,f時,不顯示小數點

n(n=1,2,3...) 當type=e,e,f時表示的最大小數字數

type=其他,表示顯示的最大寬度

.* 格式列表中,下乙個引數還是width

5.f|n|h|l 表示指標是否是遠指標或整數是否是長整數

f 遠指標

n 近指標

h 短整數或單精度浮點數

l 長整數或雙精度浮點數

3)函式返回值:  

printf函式型別為整型,其返回值是整型值。

其值實際為printf控制輸出的字元數。

printf()函式實際上是將所有引數按字元輸出,根據該函式的引數1(const char *format),我們不難理解。

例如:int a,b;

a=printf("gelin\n"); //a的值為6,

b=printf("the value of printf is:%d",a); //b的值為24

4)特別注意

printf 從右向左執行!!!

5)示例

1> printf("%10.5f\n",5.2);  // 右對齊位寬 10個字元,小數點後5位

2>printf("%f",3);  // 整型3不會被隱式型別轉換為浮點型,而是被直接按記憶體內容當作浮點型

內部使用等價於 

int i = 3; 

printf("%f", *(float*)&i)

對於%f預設為double浮點型(64位,預設的顯示精度是小數點後6位)則3實際的值接近於0

根據ieee 754標準對64位浮點數採用的表示為: 

數符(1位)| 階碼 (11位) | 尾數 (52位) 

記憶體中整數3就是 00000000 00000000 00000000 00000011 +32位隨機值

所以輸出值為:0.000000

3>printf("%d",5.01);   //  輸出乙個大數

按int型別定址4個位元組,會產生大整數

指標和引用那些事

指標和引用的概念 引用 乙個已定義變數別名 指標和引用區別 1 指標是乙個位址,指向記憶體中一塊儲存單元,它的值可以發生變化,可以指向其他儲存單元 引用是乙個變數別名,和原來變數是同乙個東西,即在記憶體中占有同一儲存單元,被編譯器實現為const指標,並且不可被多次初始化 重定義 話不多說,看下面例...

引用和指標的那些事

2.3.1 引用 引用並非物件,相反的,它只是為乙個已存在物件所起的另外乙個名字。示例 int ival 1024 int refval ival tips 1.除2種情況外,引用的型別要和與之繫結的物件嚴格匹配 2.引用必須被初始化,且一旦初始化後,它和初始值物件一直繫結在一起,不能更改繫結的物件...

指標的那些事

關於指標,大家都不陌生,無論學習c,c 亦或者其它程式語言,它都是不可或缺的。但是指標的定義 指標的用法 等等各種問題。我們都必須弄清楚,不能讓他阻礙我們前進的步伐 先說int p 這裡有必要說明一下 int 表示的定義乙個指向int 型別的指標變數 該變數記憶體裡是所指物件的位址,用 指標運算子 ...