記錄一些之前沒有注意到的小細節。
char ex[20];
scanf("%19s", ex);
scanf()
用於吸收結構化字串,%19s
可以防止陣列越界,不吸收回車。
fgets(ex, sizeof(ex), stdin);
fgets()
用於吸收非結構化字串,sizeof(ex)
是吸收的字串的總長度,包括'\0'
,這裡為20
,吸收回車。
int j;
scanf("%i", &j);
%i
自動將輸入轉化為十進位制,接受的輸入樣式為:十進位制、十六進製制、八進位制,如:12
,0xc
,014
。
printf("%i", j);
這裡%i
和%d
沒什麼區別。另外,printf()
用於輸出格式化字串,實際上呼叫fprintf()
,即:fprintf(stdout, "%i", j);
若要直接輸出字串則可以使用puts()
,如:puts("hello world!");
puts()
會自動在字串結尾輸出回車。即:puts("");
==printf("\n");
int doses = ;
printf("%i", 3[doses]);
輸出結果為1000
,參考帖子:*(3+doses)怎麼就等於3[doses]了
doses[3] == *(doses + 3) == *(3 + doses) == 3[doses]結構體/聯合體初始化:
typedef
union quantity;
char str = "hello world!";
char *p = str;
printf("%s == %s\n", str, p);
printf("%i != %i\n", sizeof(str), sizeof(p));
輸出結果為:
hello world! == hello world!
13 != 8
故將陣列位址作為函式引數時,要考慮是否需要加多乙個長度引數接收陣列的長度。
位欄位主要用於一些使用空間很寶貴的程式設計中,如嵌入式程式設計。成員型別必須為unsigned int
,需要用:
指定成員所佔的位數。如:
typedef
structsurvey;
在同一結構中,位欄位才能節省空間。
strdup()
將字串複製到堆上,要用free()
釋放空間,不釋放會導致記憶體洩漏。如:
char str = "hello world!";
char *copy = strdup(str);
printf("%s == %s\n", str, copy);
free(copy);
strdup()
標頭檔案為string.h,free()
標頭檔案為stdlib.h。
size_t
是unsigned int
型別,是陣列下標值的型別,也是sizeof
操作符返回的值的型別,也是str*
相關函式返回的長度等的型別。
在c語言中,所有的表示式都有值。如:z = y = x = 4
。x = 4
返回值為4
,於是z = y = 4
;y = 4
返回值為4
,於是z = 4
。這也就是」連等賦值「。
在%08x
中,0
是標誌字元,當輸出值的寬度小於最小寬度(這裡設定為8)時用」0「(預設用空格)填充。
malloc()
返回的是通用指標,即void *
型別的指標。
c 前半部分總結
建構函式 與類同名的特殊成員函式,主要用來初始化物件的資料成員。定義形式如下 class x 特點沒有返回值,可以過載,由系統自動呼叫,不允許在程式中顯示呼叫。例 include using namespace std classx void main 析構函式 與類同名的另一類特殊成員函式,作用有...
奇數字於偶數的前半部分
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。兩個思路吧,第乙個思路 類似冒泡演算法,前偶後奇數就交換 class solution 第二個思路 再建立乙個陣列 class so...
java正規表示式匹配網域名稱前半部分
string spath url.tostring replacefirst pattern,替換首次出現的位置 以下省略 url構成 http http ftp 雙斜槓 伺服器網域名稱或者ip位址 點和字母數字組成 埠號 斜槓 字母陣列組成的專案名 例如 這表示在ip192.168.1.100的伺...