程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 《C專家編程》筆記2

《C專家編程》筆記2

編輯:關於C語言

第二章 這不是Bug, 而是語言特性
無論在什麼時候,如果遇見了這樣一條語句malloc(strlen(str)); , 幾乎可以斷定它是錯誤的,malloc(strlen(str)+1);才對;

總結——進步是計算機軟件工程和編程語言設計藝術逐步發展的重要動因;

[cpp]
#include<stdio.h> 
 
int main(int argc, char **argv)  

    const int one = 1; 
 
    int i = 1; 
    switch(i) { 
        case one: printf("1"); 
    } 


以上代碼編譯都不會通過,說明const 其實並不真正表示常量;
break 語句事實上跳出的是最近的那層循環語句或者switch 語句;

當sizeof 的操作數時個類型名時,兩邊必須加上括號,(這常常使人誤以為它是個函數),但操作數如果是變量則不必加括號;

有些專家建議在C語言中記牢兩個優先級就夠了:乘法和除法大於加法和減法,在設計其他的操作符時一律加上括號;

操作符的結合性:它是仲裁者,在幾個操作符具有相同優先級時決定先執行哪一個;

所有賦值符(包括符合賦值符)都具有右結合性;(又結合的也就兩類一類是賦值符一類是單目運算符);

[cpp]
#include<stdio.h> 
#include<string.h> 
char * f()  

    char buf[10]; 
 
    strcpy(buf, "abcdefg"); 
    return buf; 

int main(int argc, char **argv)  

    printf("%s",f()); 

以上代碼打印不出預計值,因為buf是局部變量,函數結束時,由於該變量已被銷毀,誰也不知道這個指針所指向的地址的內容是什麼;

摘自 CodeBlog

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved