• 与C语言不同的基础语法


    一、不同

    1.可同时定义并初始化多个变量
    2.有string字符串类型
    3.可在循环中定义变量
    #include
    using namespace std;
    int main()
    {
    	int a=1,b=2;//可同时定义并初始化多个变量
    	string name;//字符串类型 
    	char array[3]; 
    	for(int i=1;i<=3;i++)//for中定义i变量 
    	{
    		cin>>array[i];
    		cout<<"array:"<<array[i]<<","<<endl; 
    	}
    	cin>>name;
    	cout<<"name:"<<name<<"\n"<<endl; 
    	cout<<"a:"<<a<<"\n"<<"b:"<<b<<endl;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    4.动态内存分配关键字不同
    #include
    #include//包含字符串处理函数 
    using namespace std;
    int main()
    {
    	int *p=new int;//为指针动态分配一个int型空间;相当于C语言中:int *p=(int *)malloc(sizeof(int)); 
    	char *q=new char[3];//为指针动态分配一个连续空间;相当于C语言中:char *p=(char*)calloc(3,sizeof(char)); 
    	strcpy(q,"堆内存的动态分配");//将字段复制到指针q指向的内存空间中 
    	*p=100;
    	cout<<"指针p的值:"<<*p<<endl;
    	cout<<q<<endl;
    	delete []q;// 释放一个连续空间[]+释放变量名;相当于C语言中:for(i=0;i<3;i++) free(q[i]); 
    	delete p;//释放p所指向的内存空间,相当于C语言中:free(p); 
     } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    5.可以定义函数的结构体类型
    #include
    using namespace std;
    struct function{
    	void sayHi(char *name){
    		cout<<"hi,"<<name<<endl;
    	}
    	void sayBye(char *name){
    		cout<<"bye,"<<name<<endl;
    	}
    };
    int main()
    {
    	struct function fun;
    	fun.sayHi("c++");//调用结构体中方法
    	fun.sayBye("c++");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    二、拓展

    特殊运算符的应用
    #include
    using namespace std;
    int main()
    {
    	int a=10,b=12,flag=~a;
    	cout<<"~a:"<<flag<<endl;//按位取反:1111 0101 —> 负数:符号位不变,其余位取反+1 —> 得原码:-000 1011即-11 
    	flag=a&b;
    	cout<<"a&b:"<<flag<<endl;//按位与:同1为1,否则为0 
    	flag=a|b;
    	cout<<"a|b:"<<flag<<endl;//按位或:同0才0,否则为1 
    	flag=a^b;
    	cout<<"a^b:"<<flag<<endl;//异或运算:相异为1,相同为0 
    	flag=a<<1;
    	cout<<"a<<1:"<<flag<<endl;//a左移一位:0000 1010 —>0001 0100即 20
    	flag=a>>1;
    	cout<<"a>>1:"<<flag<<endl;// a右移一位:0000 1010 —>0000 0101即 5
     } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    RPC框架(一)——简易RPC
    【SpringBoot】线程池自定义配置
    基于Java毕业设计养老院管理系统源码+系统+mysql+lw文档+部署软件
    IDEA工具第二篇:自定义Java方法注释模板
    C++菱形继承问题与虚拟继承原理
    旋转框/微调按钮的基类--QAbstractSpinBox 类
    代码随想录算法训练营 动态规划part08
    MySQL学习系列(4)-每天学习10个知识
    易趋云亮相第七届SaaS应用大会
    第86步 时间序列建模实战:Transformer回归建模
  • 原文地址:https://blog.csdn.net/2301_76371717/article/details/133840287