C++基础常识
来源:互联网 发布:不干胶标签设计软件 编辑:程序博客网 时间:2024/06/03 20:07
int f(int x); /* 声明一个函数 */ 普通函数
int (*f) (int x); /* 声明一个函数指针 */ 指向一个函数的指针
int* f(int x); /* 声明一个指针函数 */ 返回值是指针的函数
int* array[ ] /*指针数组*/ 元素是指针的数组
int (*array)[ ] /*数组指针*/ 指向一个数组的指针
#ifdef __cplusplus
extern "C" {
#endif
//一段代码
#ifdef __cplusplus}
#endif
C和C++对函数的处理方式是不同的.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明。
#ifndef xxxxx
#define xxxxx
//头文件内容
#endif
用宏做头文件保护,防止重复引用
函数回调在C语言中是通过函数指针来实现的,通过将回调函数的地址传给被调函数从而实现回调。必须有函数指针。
* 广播信息
*/
void broadCast(char* outputBuffer, size_t size)
{
//建立套接字
//第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET;
//第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM、原始套接字SOCK_RAW
//第三个参数指定应用程序所使用的通信协议。
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
//建立地址对象,并填充
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET; //sa_family是地址家族,一般都是“AF_xxx”的形式。通常大多用的是都是AF_INET;代表TCP/IP协议族
servaddr.sin_port = htons(Config::udp_port); //存储端口号
//绑定目的广播IP地址
inet_pton(AF_INET, "192.168.1.255", &servaddr.sin_addr);
//设置启动广播通信
const int on = 1;
setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));
//发送消息
sendto(sockfd, outputBuffer, size, 0, (struct sockaddr*) &servaddr,
sizeof(servaddr));
std::cout<<outputBuffer<<std::endl;
//关闭套接字
close(sockfd);
}
/**
* 单播信息
*/
void uniCast(char* outputBuffer, size_t size, const std::string& to_ip)
{
//建立套接字
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
//建立地址对象,并填充
struct sockaddr_in servaddr;
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(Config::udp_port);
//绑定目的IP地址
inet_pton(AF_INET, to_ip.c_str(), &servaddr.sin_addr);
//发送消息
sendto(sockfd, outputBuffer, size, 0, (struct sockaddr*) &servaddr,
sizeof(servaddr));
close(sockfd);
}
- C语言基础常识
- C++【基础常识】
- 【基础常识】认识C语言
- 【基础常识】数据和C
- C、C++、Java的基础常识介绍
- C语言---基础概念和常识
- 基础常识
- 基础常识
- C常识
- c常识
- [C++][常识]
- C语言的基础常识-转义字符与格式控制
- JAVA基础---基础常识
- 端口基础常识大全
- 端口基础常识大全
- 端口基础常识大全
- java 基础常识
- 基础小常识集锦
- Mysql数据库定时任务
- nohup scp password
- 领域专用语言开源框架Xtext2.0正式发布
- OnSize函数
- Android drawable 目录下 创建子目录问题
- C++基础常识
- SQLserver 表名、列名、列中文名、列类型、长度等
- 解决“/bin/bash^M: bad interpreter: No such file or directory
- 使用Perfmon.exe查看CPU、内存使用率等
- Android画图之Matrix
- Android 判断 Service 是否已经运行
- xampp无法使用虚拟主机名称来进行识别不同的测试网站
- 完全优化MySQL数据库性能的八个方法
- 关于sap 二次开发的一些事