<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Monody_theone的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Monody_theone</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Monody_theone]]></copyright><item><title><![CDATA[C++友元类的使用]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/119150525</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/119150525</guid><author>Monody_theone</author><pubDate>Tue, 27 Jul 2021 18:38:19 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
using namespace std;

struct X;

struct Y
{

	void f(X*);
};

struct X
{
private:
	int i;
public:
	void seti(int n);
	void outputi();
	friend void Y::f(X* p_X);
	friend class Z;
	friend void g();
};

void X::seti(int n)
{
	this-&.]]></description><category></category></item><item><title><![CDATA[C语言，scanf读取数字的规则]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/109158529</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/109158529</guid><author>Monody_theone</author><pubDate>Mon, 19 Oct 2020 12:42:22 +0800</pubDate><description><![CDATA[scanf读取数字的规则：

用户输入的内容会保存在输入队列中，
读取%d时，读取输入队列中的数字，直到遇到不是数字的字符（例如空格、小数点）就结束一次读取。
读取%f时，读取输入队列中的内容，直到遇到第二个小数点或其他不是数字的字符。
下一次读取会接着上次读取到的位置继续读取。（在仅读取数字时会忽略空白字符（空格、换行符、水平制表符等）而继续读取下面的内容）


举个栗子
int int_1; double dou_1;
scanf("%d%lf", &amp;int_1, &amp;dou_1);
pr]]></description><category></category></item><item><title><![CDATA[C语言，关于连续使用多个scanf()函数读取字符的事]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/109131601</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/109131601</guid><author>Monody_theone</author><pubDate>Sat, 17 Oct 2020 13:46:34 +0800</pubDate><description><![CDATA[先来看这么一段代码
int a;
char c
scanf("%d", &amp;a);
scanf("%c", &amp;c);

想要用多个scanf来进行字符的输入，我们在输入字符前不能输入空白字符（空格回车），否则scanf在读取字符时就会自动把输入队列中的空白字符读取到%c中。
那么如何避免这种情况呢。
首先，把所有的输入放到同一个scanf()函数中就能避免这种情况。
如果非要使用多个scanf的话，那么有两种选择。

在输入字符之前，不要添加任何空白字符，直接接着上一个输入输入字符就行了
如果]]></description><category></category></item><item><title><![CDATA[cin.get()的各种版本]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108865554</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108865554</guid><author>Monody_theone</author><pubDate>Tue, 29 Sep 2020 11:51:25 +0800</pubDate><description><![CDATA[cin.get(),不含参数，用于接受一个回车
cin.get(char)，只有一个char类型参数，用于读取一个字符到char类型中
cin.get(char*, int)，第一个参数为字符数组的数组名，第二个参数为需要读取的字符数，用于读取一定数目的字符到字符串

以下内容是C++ Primer Plus上关于函数重载的描述：

…在C语言中，如果函数有多个参数，则使用时不能只传递一个参数；但C++中可以这样做，因为C++支持被称为“函数重载”的OOP（面向对象编程）特性。函数重载允许创建多个同名函数.]]></description><category></category></item><item><title><![CDATA[C++入门：cout处理数组名，输出的是什么？]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108803687</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108803687</guid><author>Monody_theone</author><pubDate>Fri, 25 Sep 2020 20:34:31 +0800</pubDate><description><![CDATA[cout处理整型/实型  数组（int,long,short,long,float,double等）时，会直接输出地址
而处理字符数组名时，则会“聪明地”直接输出字符串，直到遇到’\0’为止
#include &lt;iostream&gt;
using namespace std;
int main()
{
	float treacle[10] = { 0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9 };//这里要注意，浮点数常量默认是double，这里转换为了float
]]></description><category></category></item><item><title><![CDATA[C++结构体成员运算符“.”与“-＞”的使用]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108761184</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108761184</guid><author>Monody_theone</author><pubDate>Wed, 23 Sep 2020 20:55:39 +0800</pubDate><description><![CDATA[使用结构体名时，用“.”
	struct structType1
	{
		int num;
		char charr[20];
	};
	struct structType1_01 = { 1, "abcdefg"};
	cout &lt;&lt; structType1_01.num;

使用指针时，用“-&gt;”
	structType1* ps = &amp;structType1_01;
	cout &lt;&lt; ps-&gt;num;

。。。
。。。
当使用结构数组时也一样，但应注意数组]]></description><category></category></item><item><title><![CDATA[const char*, char const*, 与char* const]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108698718</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108698718</guid><author>Monody_theone</author><pubDate>Sun, 20 Sep 2020 21:15:51 +0800</pubDate><description><![CDATA[const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。
事实上这个概念谁都有只是三种声明方式非常相似很容易记混。
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法：
把一个声明从右向左读。
char  * const cp; ( * 读成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to co]]></description><category></category></item><item><title><![CDATA[C++，指针与数组的区别]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108696019</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108696019</guid><author>Monody_theone</author><pubDate>Sun, 20 Sep 2020 17:57:01 +0800</pubDate><description><![CDATA[数组与指针的区别：能否修改
数组和指针基本等价是C和C++的优点之一，在很多情况下，可以用相同的方式使用指针名和数组名。
//可以这样
char arr_ch[20] = "abcdefghijkl";
cout &lt;&lt; arr_ch[2] &lt;&lt; endl;

//也可以这样
cout &lt;&lt; *(arr_ch + 2) &lt;&lt; endl;
//以上两种方法等价

在多数表达式中，数组和指针都表示地址，而区别是：
指针的值可以修改
而数组名是常量，不能修改
//指针]]></description><category></category></item><item><title><![CDATA[C++指针表示的值进行运算不能直接++/--]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108692213</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108692213</guid><author>Monody_theone</author><pubDate>Sun, 20 Sep 2020 17:15:52 +0800</pubDate><description><![CDATA[*p_updates++;//这样使用表示将指针值直接加一，增加的量等于它指向的类型的字节数

//等同于这样
*(p_updates++);

这是优先权问题, ““的优先权, 要比后置”++"低. 所以++先跑, 才执行,…”*"
如果要将指针指向的值进行++，应这样使用
(*p_updates)++;

或者
++*p_updates;


...]]></description><category></category></item><item><title><![CDATA[C++，关于string类的使用]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108678855</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108678855</guid><author>Monody_theone</author><pubDate>Sat, 19 Sep 2020 12:45:09 +0800</pubDate><description><![CDATA[要使用string类，必须在程序中包含头文件string。
string类位于名称空间std中
可以将string对象赋给另一个string对象，也可以将char数组赋给string对象
可以使用  +   和  +=   进行字符串合并操作
可以用数组表示法来读取和修改存储在string对象中的字符
要表示string对象的长度不能使用sizeof(),而应使用.size()
(sizeof(string)在同一编译器中是固定的)
string str_1 = "abcd";
cout &lt;&lt; ]]></description><category></category></item><item><title><![CDATA[C/C++可以有中文字符或字符串吗]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108636299</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108636299</guid><author>Monody_theone</author><pubDate>Thu, 17 Sep 2020 09:49:56 +0800</pubDate><description><![CDATA[C/C++中不能有中文字符，
但可以有中文字符串

]]></description><category></category></item><item><title><![CDATA[C语言中，为什么char类型可以用于算数运算]]></title><link>https://blog.youkuaiyun.com/Monody_theone/article/details/108418447</link><guid>https://blog.youkuaiyun.com/Monody_theone/article/details/108418447</guid><author>Monody_theone</author><pubDate>Sat, 05 Sep 2020 13:32:33 +0800</pubDate><description><![CDATA[char本质上和int一样，是一个整数,故可用于算数运算
char是8位的，刚好可以表示一个ASCII码，于是用于表示字符
实际上，int也可用于表示字符
char C = 'a';
int c = 'a';

在输出时,由格式符来决定输出的形式
printf("%d %d %c %c",C,c,C,c);

结果为：97 97 a a
参考这里

...]]></description><category></category></item></channel></rss>