程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Cocos2d-x 系列二之C語言

Cocos2d-x 系列二之C語言

編輯:關於C語言

1.宏定義
<1>.常量定義

#define MATH_PI 3.14

void defineH() {
    // 宏在編譯階段就把宏對應的常量給替換了,所以很快;
    printf("%f", MATH_PI);
}

<2>.方法定義

// 定義宏方法,宏方法沒有具體的返回類型;當多行的時候,在後面添加一個反斜槓;
#define MAX(A,B) {\
     A>B?A:B \
}

調用:MAX(12,30);

2.結構體
<1>.結構體定義

struct People {
    int age;
    char *name;
};

使用:

    struct People p;
    p.age = 12;
    printf("%d", p.age);

<2>.結構體指針

/**
 * 需要引入stdlib.h
 */
void structpointer() {
    // 聲明一個People指針(需要初始化)並且分配一個內存地址,內存大小為結構體People的大小
    struct People *p = malloc(sizeof(struct People));
    p->age = 20;
    p->name = "ls";
    struct People *p1 = p;
    p1->name = "ls1";
    printf("hello struct People %s", p->name); // 輸出結果為ls1
    // 使用malloc分配的指針在不需要使用之後需要釋放
    free(p);
}

3.函數指針

/**
 * 函數指針
 */
void functionpointer(int i) {
    printf("hello functionpointer %d \n", i);
}
int functionpointer1() { printf("hello functionpointer1 \n"); return 0; }
void functionpointerexe() { void (*p)(int); p = functionpointer; p(34); int (*a)(); a = functionpointer1; a(); }

4.typedef關鍵字
<1>.定義結構體

typedef struct {
    int age;
} P1;

通過typedef定義之後,在申明P1 struct的時候就不再需要在前面加struct關鍵字了;

    P1 p;
    p.age = 12;
    printf("%d", p.age);

<2>.定義函數指針

typedef int (*Void)();
Void v = functionpointer1;
v(); // 輸出functionpointer1

5.引入自定義頭文件

hello.h

// 如果沒有定義HELLO_H_,則定義HELLO_H_,是為了防止頭文件重復;
#ifndef HELLO_H_
#define HELLO_H_

void sayHello();

#endif /* HELLO_H_ */

hello.c

#include <stdio.h>
// hello.h中sayHello具體實現
void sayHello() {
    printf("hello c");
}

main.c

#include "hello.h"

int main(int argc, const char * argv[]) {
    sayHello();
}

6.文件操作

read:

void fileRead1() {
    FILE * f = fopen("xx.txt", "r");
    fseek(f, 0, SEEK_END); // seek到文件末尾:獲取文件大小
    long size = ftell(f); // 返回文件大小
    char buf[size + 1];
    fseek(f, 0, SEEK_SET); // 重新回到文件開始
    fread(buf, sizeof(unsigned char), size, f);
    buf[size] = '\0';
    fclose(f);
    printf("%s", buf);
}

write:

void fileWrite1() {
    // f可能為空,需要進行判斷!
    FILE * f = fopen("xx.txt", "w");
    fprintf(f, "hello c");
    fclose(f);
}

7.其他

<1>.生成隨機數:

    srand((int) time(NULL ));
    int randNum = rand();
    printf("%d,", randNum);
    return 0;

<2>.字符串操作:

    char buf[100];
    memset(buf, 0, 100); // 
    sprintf(buf, "hello c %d s%f,", 12, 23.2);
    printf("%s", buf);

<3>.輸入輸出:

void getput() {
    char buf[100];
    gets(buf); // 等待用戶輸入
    puts(buf);
}

int scanprint() {
    int a;
    scanf("%d", &a);
    printf("%d", a);
    return 0;
}

 

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