c语言基础(一)

来源:互联网 发布:南财网络教育平台 编辑:程序博客网 时间:2024/05/29 11:49

c语言

1、 函数指针: 函数名称代表一段函数字节码

#include <stdio.h>void sayHello() {    printf("Hello \n");}void sayHello1(int i) {    printf("Hello %d\n", i);}int main(int argc, const char* argv[]) {    void (*p)();    void (*p1)(int);    p = sayHello;    p1 = sayHello1;    p();    p1(98);    return 0;}

2、 define
宏定义, 编译使进行替换,如果define定义的是一个可单独执行的函数,则需要分号结尾,否则不需要,对应使用的地方也一样

#define NUM 6#define ObjectDelete(obj) {\ // 定义ObjectDelete函数,obj为参数     obj -> onDelete(obj);\    free(obj);\}#define ObjectField void(*onDelete)(void*);

3、 typedef: 类型定义,结尾用分号

typedef unsigned long int pthread_t; -> pthread_t t;typedef struct(结构体的名称可有可无) {int age;}People; -> People p; p.age = 13;typedef void (*Func)(); // 代表返回值为void, 无传入参数的函数 -> Func f = sayHello; f();

4、 结构体:

struct stuff {char job[20];}Huqinwei; -> struct stuff{char job[20];}; struct stuff Huqinwei;

5、 void和void *
1). void: 表示”空类型”,不表示”任意类型”,而是表示不存在,即不允许写void a,不存在类型为void的东西。
a. void作为返回值: 如 void functionNot() {}表示函数返回值不存在。在c语言中,凡是不加返回值类型限定的函数,就会被编译器作为返回整型值处理,而不是没有返回值。在c++中,每个函数必须限定返回值类型,不允许不加返回值限定
b. void作为函数的参数: 如 void functionNot(void){} 表示函数形参不存在,即函数没有形参。

2). void *: 表示”空类型指针”,表示”任意类型的指针”或表示”该指针与一地址值有关”,但是不清楚在此地址上的对象类型

6、 指针的初始化和赋值
1. 初始化:在初始化时,”=”右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int *p = 0除外,该语句表示指针为空)。此时,*p只是表示定义的是个指针变量,并没有间接取值的意思

原创粉丝点击