c++对c的加强--实用性加强(for语句、关键字的升级)

一、for语句的升级(解决循环变量浪费空间的问题)
c语言中c89

#include
int main()
{
 int i;
 for(i=1;i<100;i++)
    {
    
     }
 for(i=5;i<200;i++)
    {
     
     }
 return 0;
}

c99已经做了优化,可以

forint i=0;i<100;i++

c++中:

#include
using namespace std;
int main()
{
  for(int i=0;i<100;i++)//目的是节省空间
  {
  }
  //freach
  int array[5]={1,2,3,4,5};
  for(int temp:array)
  {
     cout<< temp << endl;
  }
  char src[100]="hello world";
  //char *src="hello world";
  for(char temp:src)
  {
       if(temp!='\0')
       {
            cout << temp <<endl;
        }
        else
        {
             break;
         }
  }
  return0;
}

二、关键字的升级
1、 register:将修饰变量,尽可能的保存到CPU内部寄存器中,从而省去了抓取数据的时间,提高程序运行速率。

//使用注意事项:
(1)只能修饰局部变量,不能修饰函数和全局变量。
(2)register修饰的变量,不能再用&获取该变量的地址;(有可能该变量保存在CPU内部寄存器中)。
(3)register修饰的变量,一定是CPU所接受的数据类型。(有的CPU不支持浮点型运算)
//使用场景:频繁访问的变量;

//volatile关键字
//作用:防止编译器优化(将变量优化到寄存器中(寄存器存在边际效应))
//使用场景:访问硬件时,所使用的全局变量;

volatile register int index;

c++的优化:当对register变量取地址时,会将该变量重新保存到内存中

2、outo:自动变量,(所在函数结束之后释放空间)。
c++优化内容:auto 类型推导 必须初始化

auto num1=5;
auto ptrl ="hello world";
int array[5]={1,2,3,4,5};
for(auto temp: array)
{
   cout << temp <<endl;
}

3、typedef关键字
语法作用:给数据类型重命名
工程应用:1:提供可读性;2:提高移植性
//函数名命名规则:解决的是函数功能可读性,无法解决形参的可读性

typedef unsigned int Int;
Int num;

typedef 存在一个问题 :重命名函数指针时,可读性差。

typedef int (*P_FUNC)(int,int);
 P_FUNC p_add = add;//正确写法
int (*p_add)(int,int )//p_add函数指针变量
p_add = add;
p_add(5,6);

c++优化:using 类型重命名

using P_FUNC =int (*)(int,int);
P_FUNC p_add=add;

4、const 关键字:修饰变量:该变量为只读变量
工程引用的作用:修饰函数形参,保存实参在函数执行过程中不能被修改
//const处理过程,在编译过程中处理

const int num=5;
int *p=&num;
*p=7;
printf("num=%d\n",num);

const 离谁近就修饰谁,谁就不能改变。

const int *p=&num;//1
int * const p=&num;//2
p++;//3
(*p)++;//4
num++;//5
//1写法,4会显示语法错误;2写法,3会显示语法错误

c++优化内容:const修饰的变量是常量
constexpr :#define
//在预处理阶段处理,比宏更安全,没有额外开销
作用:值不会改变,并且在编译过程中就得到计算结果的表达式

5、 新类型 bool:提高程序可读性

bool flag = false;
while (flag ==true)
{
 
}

三、c++中三目运算符返回的是变量本身,所以可以作为左值使用

int a=10;
int b=20;
(a>b?a:b)=90;//相当于给b赋值90

你可能感兴趣的:(#,c++,c++)