C语言基础

1.static

  1.1在全局变量前加static关键字,使此全局变量局限在当前文件.

2.const

3.函数指针 指针函数

函数指针是指向函数的指针变量,因而函数指针本身首先应是指针变量,只不过该指针变量指向函数。

C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。可用该指针变量调用函数。

函数指针有两个用途:调用函数和做函数的参数。

int func(int x); /* 声明一个函数 */   

int (*f) (int x); /* 声明一个函数指针 */   

f=func; /* 将func函数的首地址赋给指针f */

函数名func代表函数的首地址。

int max(int x, int y){ return (x>y?x:y);}

定义函数指针类型:

typedef int (*fun_ptr)(int,int); //fun_ptr 是返回值是int,参数类型为(int,int)的函数的指针。

申明变量,赋值

fun_ptr max_func=max;

指针函数是返回值为指针的函数。

上面的 int (*f) (int x); /* 声明一个函数指针 */ 引申,如果声明成 int* f(int x);应该就是指针函数了。

const RIL_RadioFunctions *(*rilInit)(const struct RIL_Env *, int, char **);

rilInit = (const RIL_RadioFunctions *(*)(const struct RIL_Env *, int, char **))dlsym(dlHandle, "RILCore_Init");

4. dlopen()  dlsym()


5.定义结构体类型 

struct RIL_Env{

  int *p_request_cardID;
  void (*OnRequestComplete)(RIL_Token t, RIL_Errno e, void *response, size_t responselen);
  void (*OnUnsolicitedResponse)(int unsolResponse, const void *data, size_t datalen);
  void (*RequestTimedCallback) (RIL_TimedCallback callback, void *param, const struct timeval *relativeTime);
  void (*OnUnsolicitedResponseId)(int unsolResponse, const void *data, size_t datalen, int respCardId);

}

定义结构体变量

static struct RIL_Env s_rilEnv = {
    &request_card_id_rild,
    RIL_onRequestComplete,
    RIL_onUnsolicitedResponse,
    RIL_requestTimedCallback,
    RIL_onUnsolicitedResponseId
};

6.pthread_attr_init pthread_attr_setdetachstate

查看:http://zh.wikipedia.org/wiki/POSIX_Threads

编译例子 gcc thread.c -o thread -lrt

7. socket_local_client

http://www.netmite.com/android/mydroid/system/core/libcutils/socket_local_client.c

8. cfsetispeed

http://book.51cto.com/art/200711/59758.htm

9. getopt

while(-1 != (opt = getopt(argc, argv, "p:d:s"))){

  switch(opt){

    case 'p'

      s_port = atoi(optarg);

      printf("s_port = %d", s_port);

      break;

  }

}

原文地址:https://www.cnblogs.com/jimwind/p/1746238.html