C++ new创建方法

本文介绍了C++中使用new方法动态创建变量和数组的概念,对比了new与静态变量的区别。讨论了数组名与指针的差异,强调数组名是常量指针,而指针可以改变。还提到了cout打印字符串的原理,并讲解了如何显示字符串的首地址。此外,文章提及了const指针的特性,以及如何使用new创建结构体和访问其成员。最后,简单提及了C++中与输入相关的cin.getline()和getline()函数的用法。
摘要由CSDN通过智能技术生成

使用new方法来声明和创建的量属于动态创建,不同于直接申请或者声明变量,
使用new 是一种动态联编方法,在程序执行的过程中执行的语句,当未用到该变量的时候,在内存中不会先被开辟空间,
直接申请或者什么变量 属于静态联编方法,在编译时就已经申请和占用了程序运行的空间,不管该变量是否被用到,都会占用内存。

申请一个动态的数组

数组名和指针的区别
数组名是一个常量 , 是一个指向固定地址的指针,因此不可以进行修改和赋值
但是指针是一个可以改变的值,可以被进行数值的运算和改变

cout 语句在打印一个字符串的时候 其实传递过去的是该字符串的一个首地址
cout << "zhe shi yi ge zi fu chuan " 其实cout接收到的是一个字符串的首地址
那么我们就可以用以下的方式 其实背后的逻辑是相同的
char str1[20] = “zhe shi yi ge zi fu chuan”
cout << str1
cout << 只有在遇到是char类型的地址的时候才不打印地址打印字符串中的内容直到遇到 \0 为止,
那么如果想要答应出char类型的字符串的地址,只需要进行强制类型转换即可
cout << (int * ) str1 即可打印出该字符串的首地址

const char * pt = " hello" ;
这条语句的意思是 声明了一个char型的常量指针 但是并不是说该指针是常量 而是该指针指向的内容是常量 也就是说该指针所指向的地址可以被修改,该指针可以指向不同的地址,但是该指针所指向地址中的内容不可以通过这个指针加解引用的方式或者其他方式进行修改 。

对于结构体也可以使用new的方式来创建新的结构体和结构体指针
对于新创建的结构体指针在访问成员变量时需要使用 -> 运算符
对于新创建的结构体访问成员变量时使用 . 运算符

关于指针的类型匹配问题
指向指针的指针的

关于C++ 中的cin.getline() 和 geitline()

当捕获的字符放在字符数组时,常常用cin.getline( array , size)
当捕获的字符房子string类中的时候, 可以使用getline( cin , array)

#include <iostream>

struct antarctica_years_end
{
	int year;

};

int main(void)
{
	antarctica_years_end s01, s02, s03;
	s01.year = 1998;
	antarctica_years_end * pa = &s02;
	pa->year = 1999;
	antarctica_years_end trio[3];
	trio[0].year = 2003;
	std::cout << trio->year << std::endl;
	const antarctica_years_end * arp[3] = {&s01, &s02, &s03};
	std::cout << trio->year << std::endl;
	const antarctica_years_end ** ppa = arp; // 定义了一个指向结构体类型的指针的指针 第一层指针 指向结构体 第二层指针 指向第一层指针
	/* 那么对于这个语句来讲 
	ppa是一个双层指针 经过一层解引用 *ppa 以后对应的 是一个指向结构体的指针 对应的就是数组中的元素
	那么arp对应的是一个存放了结构体地址的数组的指针 那么首先需要一个指针与其相对应 这便是 第一层指针 那么此时是没有与之对应的数据类型的
	因此需要进行第二层解引用 此时的变量整体类型就是结构体了 因此需要进行两次解引用
	*/
	auto ppb = arp;  
	
	std::cout << (*ppa)->year << std::endl;
	std::cout << (*(ppb + 1 ))->year << std::endl;

	return 0;
	

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

acanab

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

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

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

打赏作者

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

抵扣说明:

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

余额充值