C++学习之 编程基础(中国科学院大学)

本文将深入浅出地介绍C++编程的基础,包括词法与规则、数据类型、常量、变量、运算符,并通过实际的IP地址获取和解析案例,展示如何在实战中运用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

1. C++词法与规则

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 常量

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.变量

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 运算符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.实战

#pragma comment(lib, "IPHLPAPI.lib") 
#include <iostream>
#include <opencv2/opencv.hpp>
#include<typeinfo>
#include <winsock2.h> 
#include <iphlpapi.h> 
using namespace std;
using namespace cv;

typedef int INT;

int main()
{
	//定义要用的变量
	unsigned long  dwSize = 0;
	MIB_IPADDRTABLE* pTable = (MIB_IPADDRTABLE*)malloc(sizeof(MIB_IPADDRTABLE));


	//获取本机的IP地址列表,存放在pTable所指向的空间中中
	if (GetIpAddrTable(pTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER)
	{
		free(pTable);  //释放申请的内存空间
		pTable = (MIB_IPADDRTABLE*)malloc(dwSize);
	}
	if (GetIpAddrTable(pTable, &dwSize, 0) != 0)  //如果获取地址列表失败,则结束整个程序
	{
		cout << "获取地址表失败";
		exit(-1);
	}


	for (INT i = 0; i < (int)pTable->dwNumEntries;i++) {

		//输出选择的IP地址
		cout<<"\n"<<"Interface Index["<<i<<"]"<< pTable->table[i].dwIndex<<endl;
		unsigned long ip =pTable->table[i].dwAddr;
		cout<<"\tIP Address["<<i<<"]:"<<" \t"<<ip<<endl;
		cout << "\t原始存储形式值:" << hex << ip << endl;
		cout << "\t点分十进制形式:" << dec
			<< (ip & 0xff) << '.'
			<< ((ip >> 8) & 0xff) << '.'
			<< ((ip >> 16) & 0xff) << '.'
			<< ((ip >> 24) & 0xff) << endl;

		//输出选择的子网掩码
		unsigned long mask = pTable->table[i].dwMask;
		cout << "\t子网掩码[" << i << "]:" << " \t" << mask << endl;
		cout << "\t原始存储形式值:" << hex << mask << endl;
		cout << "\t点分十进制形式:" << dec
			<< (mask & 0xff) << '.'
			<< ((mask >> 8) & 0xff) << '.'
			<< ((mask >> 16) & 0xff) << '.'
			<< ((mask >> 24) & 0xff) << endl;

		//计算主机号并显示
		cout << "\t本机主机号:" << endl;
		unsigned long HostAdd = ~mask & ip;
		cout << '\t' << (HostAdd & 0xff) << '.'
			<< ((HostAdd >> 8) & 0xff) << '.'
			<< ((HostAdd >> 16) & 0xff) << '.'
			<< ((HostAdd >> 24) & 0xff) << endl;


		//计算广播地址并显示
		unsigned long broadAdd = (mask & ip) | ~mask;

		cout << "\t所在网络广播地址:" << endl;
		cout << '\t' << (broadAdd & 0xff) << '.'
			<< ((broadAdd >> 8) & 0xff) << '.'
			<< ((broadAdd >> 16) & 0xff) << '.'
			<< ((broadAdd >> 24) & 0xff) << endl;

	}

    return 0;
}

结果:
在这里插入图片描述
在这里插入图片描述

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值