C 語言簡明筆記


Chapter 1 快速入門

1.1 快速開始


    這個簡單的例子有助於你快速進入C的世界:
#include <stdio.h>
#include 
<stdlib.h>

#define PI 3.1415926
float circle(float r);

int main(int argc, char* argv) {
    
float r =0.5;
    
float c=circle(r);
    printf(
"Hello,C world! ");
    printf(
"Circle is : %1.4f ", c);
    
    
//system("pause");
    
    
return 0;
}


float circle(float r) {
    
return PI*r*2;
}
 

    這個例子包含如下知識點:
  • 如何編寫程序的入口點main函數
  • 如何用宏定義常量
  • 如何聲明和定義函數
  • 如何調用函數
  • 如何用printf函數打印字符串和浮點數

2.2 字符串的表示,頭文件

    這個例子顯示瞭如何定義字符串和用頭文件分離接口與實現:
//quick.h
#ifndef QUICK_H_
#define QUICK_H_

int len(char s[]);

#endif 
/*QUICK_H_*/
//quick.c
#include "quick.h"

int len(char s[]){
    
int c=0;
    
while(s[c]!='')c++;
    
return c;
}


//quickstart.c
#include 
<stdio.h>
#include 
<stdlib.h>

int len(char s[]){
    
int c=0;
    
while(s[c]!='')c++;
    
return c;
}


int main(int argc, char* argv) {
    
    
char s1[]="Nice weekend,";
    
char s2[]={'D','i','e','g','o','!',''};
    
char* ps="What can I do for you?";
    
    printf(
"%s%s%s ",s1,s2,ps);
    printf(
"Length of s1 is:%d ",len(s1));
    printf(
"Length of s2 is:%d ",len(s2));
    
    
//system("pause");
    
    
    
return 0;
}

    這個例子包含如下知識點:
  • 可以用三種方式定義字符串.技術上說,"字符串"保存在字符數組中,末尾必須有一個字符串結束符'/0'.如果字符串用雙引號進行定義,則編譯器會自動加上結束符.如果用單引號方式定義則需要手動加結束符.
  • 數組方式和指針方式都能定義字符串.但稍有區別.以後會對此進行說明.
  • 判斷字符串長度的技術.從程序可以看出,如果字符串初始化不正確(末尾沒有結束符),則函數有出錯的可能.許多C中的Bug都來自於不正確的字符串操作.
  • 如何用頭文件使函數的接口和實現分離.extern 告訴編譯器該函數在某處存在定義,從而順利進行編譯.


2.3 類型轉換

    這是個字符串到數值的轉換例子
#include <stdio.h>
#include 
<stdlib.h>


int isdigit(char s);
int stringToInt(char s[]);

int main(int argc, char* argv) {
    
    
char s1[]="12345";
    
char s2[]="123s4at5";

    printf(
"1:Converted : %d ",stringToInt(s1));
    printf(
"2:Converted : %d ",stringToInt(s2));
    
    
//system("pause");
    return 0;
}


int isdigit(char s){
    
return (s>='0' && s<='9');
}


int stringToInt(char s[]){
    
int i,n;
    n
=0;
    
for(i=0;isdigit(s[i]);i++){
        n
=10*n+(s[i]-'0');
    }

    
return n;
}


    這裏的知識點如下:
  • 如何判斷字符是否一個數字.技術上通過ASCII碼值來判斷.
  • 如何應用這個特性轉換字符.
    類型轉換函數會在後續章節進行彙總.

2.4 指針

    這是一個老生常談的話題了.函數內的參數(即形參)的改變並不影響實參的值,除非使用指針.
#include <stdio.h>

void failSwap(intint);
void swap(int*int*);

int main() {
    
int a=5, b=10;
    failSwap(a, b);
    printf(
"1.After failSwap(int,int),a is %d and b is %d ", a, b);
    swap(
&a, &b);
    printf(
"2.After swap(int,int),a is %d and b is %d ", a, b);

    
return 0;
}


void failSwap(int a, int b) {

    
if (a<b) {
        
int c=a;
        a
=b;
        b
=c;
    }

}



void swap(int* a, int* b) {
    
if (*a<*b) {
        
int c=*a;
        
*a=*b;
        
*b=c;
    }

}


 

    知識點
  • 指針的語法和使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章