1. 程式人生 > >牛客網刷題總結

牛客網刷題總結

近期在牛客網刷了一些題,總結了一些容易犯的錯誤,現在來一一列舉出來。

1.要清楚什麼是傳遞地址,什麼事傳遞值。
2.輸出“%s”時,遇到‘\0’就會停止,
3.對於左對齊要加-, %-30.4f, printf函式列印一個double型別的資料,要求:輸出為10進位制,輸出左對齊30個字元,4位精度。
4. ||邏輯運算子只要前面為真,後面就不用再進行判斷了。
設x、y、t均為int型變數,則執行語句:t=3; x=y=2; t=x++||++y; 後,變數t和y的值分別為__。答案就是t=1,y=2,x=3。
5.二進位制方式開啟一個檔案的方法是:

FILE *f = fopen( "test.bin"
, "wb" );

6.

main() 
{ 
    int a[5]={1,2,3,4,5}; 
    int *ptr=(int *)(&a+1); 
    printf("%d,%d",*(a+1),*(ptr-1)); 
}

在這裡面問題,就是&a+1這個就是指向整個陣列下一個位置,
*(a+1)就是陣列的第二個元素,
*(ptr-1)就是整個陣列再向後偏移4個位元組,剛好指向陣列的第5個元素,所以輸出的結果剛好是2,5。
7.當free釋放記憶體之後,指標還指向原來的那塊地址,需要我們設定 p = NULL;如果不手動設定 p = NULL,此時P就變成了野指標

8.若有以下程式段

char str[4][12]={"aa", "bbb", "cccc", "d"},*strp[4];
int i;
for(i=0;i<4;i++) 
    strp[i]=str[i];

不能正確引用字串的選項是
str[0]
strp
strp[3]
* strp
在這裡strp代表陣列 strp[4]的首地址,這個陣列儲存的值是指向每個字串的指標,*strp=strp[0]。

9.轉移字元分三種,一般轉義字元,八進位制轉移字元和十六進位制轉移字元
一般轉義字元,如‘\b’,由兩個字元表示,其實代表一個字元,這個代表退格字元
八進位制轉義字元,如‘\007’,三位數字是八進位制的,ASCII碼為7的表示響鈴
十六進位制,如’\xfe’,同樣後面數字是所表示意思的Ascii碼的十六進位制表示,注意一定要有x,大小寫都行