lessons_2:c到c++的升级

本文探讨了从C语言迁移到C++时语法的主要变化,包括全局变量定义、register关键字使用、函数定义及默认值等方面的不同。C++对类型的要求更加严格。

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

c到c++升级哪些语法有变化

  1. c语言允许重复定义多个同名的全局变量,这些多个同名的变量最终会被链接到全局数据区的同一个地址空间;但是c++不允许定义多个同名的全局变量
  2. register关键字请求编译器将局部变量存储于寄存器中,C语言中无法获得register变量的地址,但是c++中可以取得register变量的地址
  3. 函数定义与默认值
    :int fun(), fun(), int fun(void), fun(void), fun(i):
    (1).C语言中:
    fun()           //默认返回值为int型,形参为任意多个任意类型的参数的函数
    int fun()       //定义返回值为int型,形参为任意多个任意类型的参数的函数
    int fun(void)           //定义返回值为int型,无形参的函数
    fun(void)       //默认返回值为int型,无形参的函数
    fun(i)          //默认返回值为int型,默认形参为一个int型的变量i
    int fun(i)              //默认返回值为int型,默认形参为一个int型的变量i

(2).c++中:

    fun()           //语法错误,函数定义必须指明类型
    int fun()       //定义返回值为int型,无形参的函数
    int fun(void)           //定义返回值为int型,无形参的函数
    fun(void)       //语法错误,函数定义必须指明类型
    fun(i)          //语法错误,函数定义必须指明类型
    int fun(i)      //语法错误,参数必须指明其类型

对于同一段代码:

#include <stdio.h>
int g_v;
int g_v;
f(i)
{
    printf("i = %d\n", i);
}
g()
{
    return 5;
}
int main(int argc, char *argv[])
{
    register int a = 0;
    printf("a = %d\n", &a);     //in c++, but not c
    f(10);
    printf("g() = %d\n", g(1, 2, 3, 4, 5));
    return 0;
}

c编译结果预览:

这里写图片描述

c++编译结果预览:

这里写图片描述
总结:说明一点,c++中对类型要求极为严格,必须要指明函数返回值和变量类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phial03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值