搜尋此網誌

顯示具有 C 標籤的文章。 顯示所有文章
顯示具有 C 標籤的文章。 顯示所有文章

2013年1月29日 星期二

Linked List implementation in C

#include <stdlib.h>
#include <stdio.h>

struct Node{
    int value;
    struct Node* nextNode ;
};

typedef struct Node* NodePtr;

void insert(NodePtr  , int value);
void display(NodePtr );

int main (void){

    NodePtr start = (NodePtr)malloc (sizeof(NodePtr));
    start->value = 0;
    start->nextNode = NULL;
    insert(start , 1);
    insert(start , 2);
    insert(start , 3);
    display(start);
    return 0;
}

void insert(NodePtr node , int value){
    NodePtr temp = node;
    while(temp->nextNode != NULL){
        temp = temp->nextNode;
    }
    NodePtr new = (NodePtr)malloc (sizeof(NodePtr));
    new->value = value;
    new->nextNode = NULL;
    temp->nextNode = new;
}

void display(NodePtr node){
    NodePtr temp = node;
    while(temp != NULL){
        printf("%d\n", temp->value);
        temp= temp->nextNode;
    }
}

2013年1月28日 星期一

Sizeof a c structure. C結構的大小.

Structure 會把char不足的部分, 補足到4 bytes .
#include <stdlib.h>
#include <stdio.h>

struct people{
    char name;
    int id;
};

int main(void ){

     printf("%d\n" , sizeof(struct people));
    printf("%d\n" , sizeof(char));
    printf("%d\n" , sizeof(int));
    return 0;
}

2011年8月26日 星期五

C 雙重指標

雙重指標:a pointer to a pointer,意思就是存了一個記憶體位址的指標.

i.e




#include <stdlib.h>
#include <stdio.h>
void doublePointerPractice();

struct people{
    char name;
    int id;
};

typedef struct people * PeoplePtr;

int main(void){

    doublePointerPractice();
    return 0;

}

void doublePointerPractice(){

    PeoplePtr peoplePtr = (PeoplePtr)malloc(sizeof(PeoplePtr));
    peoplePtr->id = 12345;
    PeoplePtr * ptrPtr = &peoplePtr;
    printf("%d" , (*ptrPtr)->id );

}





c malloc,動態記憶體配置

malloc函式,要以需求的記憶體空間大小為參數,然後會回傳一個 void * (void 指

標:一種generic type),programmer要自己轉型為所要的指標型態.
在使用完之後

要用free函式釋放記憶體空間,避免 memory leak的發生.


i.e.

2011年8月24日 星期三

c string

C語言沒有字串型別,因此要用字元陣列,或者是字元指標來作為string type. 因為陣列的第一元素名稱可以當成address,所以也可傳入以指標為參數的函式.下面列出兩者的使用方式

2011年8月8日 星期一

c string(c 字串)

C語言採用字元陣列的方法來表示字串.

C structure

structure這個reserved word可以被用來使用者自訂義的資料型態,可是struct只有property(屬性),並沒有物件的方法. struct定義的型態也是使用'.'運算子來存取資料成員.

i.e:

C type size (型態大小)

我們可以用sizeof來求得某個型態的大小,也就是使用多少記憶體空間來儲存資料

i.e.



由此可知指標都是4 bytes空間,結構則為8 bytes.

C io(C語言 輸出與輸入)

讀取單一字元和印出單一字元用getchar() and putchar() as following sample



讀取字串和印出字串用scanf ,printf ,如下例子:



getchar為讀取字元,特別的地方在於,讀入的字元若為數字,也可以拿來作為logic 的comparison(比較)

i.e: