C++ 之初体验

前言

C++与Objective-C都是在1980+年代诞生,所以语法糖上面都有很多相似地方,学起来并不难。至于我用的IDE,我直接用的是Xcode,很方便。

国际惯例,打印hello world

cout << "hello world" << endl;
复制代码

这里介绍几个关键词:

cout 输出 cin 输入 endl 换行打印

cout 语法形式:

cout << x << endl;
cout << "x + y =" << x+y << endl;
复制代码

cin 语法形式:

cin >> x;
cin >> x >> y;
复制代码

这样的输入、输出方式有哪些便利? 1、不用关注占位符 2、不用关注数据类型 3、不易出现问题

####C++命名空间(namespace) 在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。

举个例子:同个年级有相同名字的同学,那样为了避免认错人,我们可以把他们分到不同班级里,这样就区分开来了。这里的班级就可以称为命名空间。

关于命名空间描述几点

1、使用namespace定义命名空间。 2、通过命名空间可以区分具有相同名字的变量。 3、通过命名空间可以区分具有相同名字的函数。

代码示例:

#include <iostream>
#include <stdlib.h>
using namespace std;
   namespace     myNum            //填写命名空间的关键字
{
    int x = 105;
}
int main()
{
    // 使用bool类型定义isOdd,作为状态位
        bool    isFlag = false;       
	
	if(myNum::x % 2 == 0)
	{
		//改变状态位的值,使其为false
        isFlag = false;
	}
	else
	{
	    //改变状态位的值,使其为true
        isFlag = true;
	}
    // 判断状态位的值
	if(isFlag)
	{
		// 如果状态位的值为true,则打印变量x是奇数
        cout << x是奇数 ;
	}
	else
	{
        // 如果状态位的值为false,则打印变量x是偶数
		cout << x是偶数 ;
	}
	return 0;
}
复制代码

####C++ 引用 代码示例:

#include <iostream>
using namespace std;
int main(void)
{
    int x = 3;
    //定义引用,y是x的引用
    int &y = x;
    //打印x和y的值
	cout << x << endl;
	cout << y <<endl;
	//修改y的值
    y = 100;
    //再次打印x和y的值
    cout << x << endl;
	cout << y <<endl;  
	return 0;
}
复制代码

####C++ const关键字 代码示例:

//const
#include <iostream>
using namespace std;
int main(void)
{
    //定义常量count
    const int count = 3;
    const int *p =  &count;
    //打印count次字符串Hello C++
	for(int i = 0; i < count; i++)
	{
		cout << "Hello C++" << endl;
	} 
	return 0;
}
复制代码

####C++函数新亮点 ######函数参数默认值

void fun( int i,int j=5,int k=10 );//有默认参数值的参数必须在参数表的最右端
复制代码

######函数重载 在相同作用域内 用同一个函数名定义的多个函数 参数个数和参数类型不同

######内联函数 编译时将函数体代码和实参代替函数调用语句 内联函数关键字:inline

关于C++函数形参默认值的说法

1、当函数有多个形参时,可以都有默认值。 2、当函数有多个形参时,可以都没有默认值。 3、当函数有多个形参且都有默认值时,实参个数可以少于形参个数。

代码示例:

#include <iostream>
using namespace std;
/**
  *函数功能:返回a和b的最大值
  *a和b是两个整数
  */
int getMax(int a, int b)
{
    return a > b ? a : b;
}

/**
  * 函数功能:返回数组中的最大值
  * arr:整型数组
  * count:数组长度
  * 该函数是对上面函数的重载
  */
int getMax(int *arr,int count)
{
    //定义一个变量并获取数组的第一个元素
    int maxNum = arr[0];
	for(int i = 1; i < count; i++)
	{
        //比较变量与下一个元素的大小
		if(maxNum < arr[i])
		{
            //如果数组中的元素比maxNum大,则获取数组中的值
			maxNum = arr[i];
		}	
	}
	return maxNum;
}

int main(void)
{
    //定义int数组并初始化
	int numArr[3] = {3, 8, 6};
    
    //自动调用int getMax(int a, int b)
	cout << getMax(numArr, 3) << endl;
    
    //自动调用返回数组中最大值的函数返回数组中的最大值
	cout << getMax(numArr[0], numArr[2]) << endl;
	return 0;
}
复制代码

####C++内存管理 什么是内存管理?

内存的本质是资源 操作系统掌管内存资源 对于我们开发者,我们能手动申请与归还 申请/归还内存资源就是内存管理

如图:

内容总结 使用new申请内存,使用delete释放内存 申请内存需要判断是否成功,释放内存需要设空指针 new与delete配套使用

代码示例:

#include <string.h>
#include <iostream>
using namespace std;
int main(void)
{
    //在堆中申请100个char类型的内存
    char *str = new char[100];
    //拷贝Hello C++字符串到分配的堆中的内存中
	strcpy(str, "Hello imooc");
    //打印字符串
    cout << str << endl;
    //释放内存
	delete []str;
    str = NULL;
	return 0;
}
复制代码
参考资料

http://www.imooc.com/learn/342 http://www.imooc.com/learn/381

转载于:https://juejin.im/post/5a334833f265da43062acfc6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值