近期发现的一些-20190519
一、關于符號優先級問題
算數運算符>關系>邏輯>賦值; //引用BJ內容
例如a[i]+=a[i-1]+a[i-2];表示a[i-1]先和a[i-2]相加,其結果和a[i]完成相加等于的操作。
二、對于for循環中的終止值
例如
這里將打出6個will 520和k的值7。
三、對\0結束字符的替換來阻止結束
例如
輸出
coszsabcd
四、從地址位置開始輸出打印
若為一維數組
puts(&a[3]);表示從a[3]位置開始連續輸出遇到\0結束
若為二維數組,見<三>中內容
五、宏定義函數
一直用宏定義定義常量,容易忽略宏定義函數的寫法
表示一個函數名為A的帶有形式參數AB的函數,函數內容為后面括號中的內容,引用時例如printf("%5d",A(x,y));即可
六、關于++a和a++
a++表示先用a進行運算,后加1;
++a表示先把a加1,后進行運算。
依照例子來說明
int a=0,b=1,c=0; for(;;) {if(a++||--b||c++)//第一次訓進入循環時,第一部分為0看第二部分,第二部分為0看第三部分,第三部分為0本次不打印ok,進入第二次循環,此時a已經變成1,成立進入循環。{printf("ok");} }七、指針聲明的復雜形式
先介紹一個法則——左右法則,官方給出的解釋是:
The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you encounter parentheses, the direction should be reversed. Once everything in the parentheses has been parsed, jump out of it. Continue till the whole declaration has been parsed.
即首先從最里面的圓括號內未定義的標識符開始閱讀看起,然后往右看,再往左看。每當遇到圓括號時,就應該掉轉閱讀方向。一旦解析完圓括號里面所有的東西,就跳出圓括號。重復這個過程直到整個聲明解析完畢。
下面用幾個例子來解釋:
-------例一:
首先看到標識符名a,a是一個數組,這個數組有5個元素,每一個元素都是一個指針,指針指向int* (int, char*),指向的是一個函數,這個函數參數是int, char*,返回值是int*。
-------例二:
c是一個指針,指針指向一個數組,這個數組有9個元素,每一個元素都是int(*)()(也是一個函數指針,指向一個函數,這個函數的參數為空,返回值是int型)。
八、關于數組在各個表達式中的傳遞
例如下面:
例如下面:
首先需要注意strlen的兩個問題:
①引用strlen函數需要包含string.h頭文件
②strlen函數計算長度不計算\0結束符
下面舉例子:
九、時刻注意變量的有效域
一般用于儲存數據的數組應放在主函數中,除了main以外的主函數可以用了更換位置、累加計算等等,但是不適合用來儲存數據數組。(文件除外)
總結
以上是生活随笔為你收集整理的近期发现的一些-20190519的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于将一个数输出为原码、反码和补码的解惑
- 下一篇: 关于y7000安装Ubuntu的一些心得