C++(1) 初始化|输入输出|const|

1,C++的初始化

1.1c和c++中的初始化

在c语言中我们的初始化方式通常都是

这样的初始化方式简单明了

在c++中我们通常选择

这种方式来初始化变量,使用()来初始化是古早版本中c++初始化的方法,如果不给初始值,他就会默认为零,指针则是NULL。那么我们来看看上面的初始化,使用()初始化方法有一个很明显的坏处,

你内心想的是,定义一个整形sum,值为空,但编译器会把它当作是一个函数来对待,函数的返回值是int。而使用{}就可以避免这种情况。

2,输入输出

2.1c的输入输出

2.2c++的输入输出

>>在c++里我们叫提取符,<<我们叫插入符,endl我们认为等于\n的作用

观察两种不同的输入输出方式,很明显的看出c++的更加简洁,他不需要指定变量的类型,如果你需要修改数据类型,c语言还需要修改打印和输入函数,而c++则不需要。

同时我们关注下图

stdio.h头文件是我们使用c语言时引得头文件,他包含了标准输入(in),标准输出(out),标准错误(err)。

iostream是我们c++的头文件,他包含了cin,cout,cerr,clog

cin是标准输入流对象,cout是标准输出流对象,cerr是标准错误流对象,clog是标准日志输出对象,值得注意的是,cerr是无缓冲区的,cout和clog都是有缓冲区的,缓冲区的概念我不再赘述。

cerr输出的是错误信息,需要尽快显示到屏幕上,所以无缓冲区。

cout用于正常的输出,比如程序运行结果。

clog用于输出程序的运行状态或诊断信息,通常用于调试或日志记录。

2.3字符串的输入

我们可以看到,使用cin输入字符串时,遇到空格就会结束,因为字符串是以\0作为结束的,而有时我们需要加入空格该怎么办呢。

我们可以使用cin.getline来输入字符串,括号内第一个参数是数组名,第二个是数组大小,这种输入便不会出现之前的情况。

3,const关键字

const关键字是非常重要的一部分,我们今天先简单认识一下他

3.1const变量

test.c

上图是一个很简单的c语言程序,但仍然有可以拿出来说说的点,我们都知道const修饰的变量叫做常变量,不可以修改值,但我们可以通过(int*)这种方式来强转他的类型,以此来通过指针修改它的值。但这很明显不是我们想要的,我们不希望修改n的值才会使用const关键字,这个问题在c++中我们得到了解决。

同时因为n是一个常变量,我们也不能使用他来当作数组的大小。

test.cpp

我们观察上述c++程序,发现了两点跟上面c程序的不同,一是我们的n可以做数组大小了,二是我们即使强转了n也无法使用指针改变n的值,这是为什么呢。

通过调用监视窗口我们发现n的值和*p的值都被修改成了100,这并没有解决我们的问题,

通过查阅资料我得知,原因是因为在c++程序中使用const修饰后,会把n当成常量值,在代码的编译阶段,会将所有的n替换成10,这就解释了为什么可以使用n当作数组大小,以及为什么在printf函数中n的大小还是10。

3.2const和指针

上图这些指针和const的关系在c语言中我们已经学习过了

p1是普通指针 ,p2指向为常性,解引用为常性 ,p3指针变量自身是常性 ,p4指向和指针变量自身都是常性。

p2我们叫常量指针,p3是指针常量,关于这两位的特性简单来说,

常量指针,值不能通过指针修改,指针的指向可以改变

指针常量,可以通过指针修改常量值,指针的指向不能改变,谁后说,谁能变。

3.3常变量和指针

上图我们发现第八行,第十行报错了,这解释起来也很简单。

变量a是常变量,他的值不能去修改,而p1作为一个普通指针,是可以通过解引用修改a的值的,p3作为一个指针常量,也可以修改其值,所以这两个都是不能定义的,是错误的。而p2和p4则保证了a值不可修改,所以可以定义。

总结而得就是能力强的指针赋值给能力收缩的指针,权限在赋值时候只能一步步变小,不能扩大。

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值