C++第七天

1.getline

1.1.用法一

#include <iostream>
using namespace std;

int main()
{
	string str;
	getline(cin,str);
	cout<<"str:"<<str<<endl;
}

执行结果:

root@host:/home/LinuxShare/004.c++/day07# g++ main.cpp
root@host:/home/LinuxShare/004.c++/day07# ./a.out
zxcvbnm,.
str:zxcvbnm,.

1.2.用法二

#include <iostream>
using namespace std;

int main()
{
	char line[200];
	cin.getline(line,200);
	cout<<"line:"<<line<<endl;
}

执行结果:

root@host:/home/LinuxShare/004.c++/day07# g++ main.cpp
root@host:/home/LinuxShare/004.c++/day07# ./a.out
tyuionm,
line:tyuionm,

2.输入一串字符,统计每个字符个数

#include <iostream>
using namespace std;

int main()
{
	string str;
	cout<<"input some text:";
	getline(cin,str);
	int cnt[256]={};
	for(int i=0;i<str.size();i++)
	{
		//字符的asc码为下标
		cnt[(int)str[i]]++; 
	}
	for(int i=0;i<256;i++)
	{
		//输出
		if(cnt[i]!=0)
		{
			cout<<(char)i<<":"<<cnt[i]<<endl;
		}
	}
}

执行结果:

root@host:/home/LinuxShare/004.c++/day07# g++ main.cpp
root@host:/home/LinuxShare/004.c++/day07# ./a.out
input some text:qwertyuiqwerty
e:2
i:1
q:2
r:2
t:2
u:1
w:2
y:2

3.常指针(const)

int * const p;

4.指针变量占字节数

指针变量占字节数和系统位数有关。
32位系统,指针占4个字节;
64位系统,指针占8个字节;

#include <iostream>
using namespace std;

int main()
{
	int** p = new int*[5]; //申请5个int*类型的空间
	cout<<"sizeof(int** p)"<<sizeof(p)<<endl;
	//内容
	cout<<"p[0]:"<<p[0]<<endl;
	cout<<"p[1]:"<<p[1]<<endl;
	cout<<"p[2]:"<<p[2]<<endl;
	cout<<"p[3]:"<<p[3]<<endl;
	cout<<"p[4]:"<<p[4]<<endl;
	//地址
	cout<<"&p[0]:"<<&p[0]<<endl;
	cout<<"&p[1]:"<<&p[1]<<endl;
	cout<<"&p[2]:"<<&p[2]<<endl;
	cout<<"&p[3]:"<<&p[3]<<endl;
	cout<<"&p[4]:"<<&p[4]<<endl;
}
root@host:/home/LinuxShare/004.c++/day07# g++ main.cpp
root@host:/home/LinuxShare/004.c++/day07# ./a.out
sizeof(int** p)8
p[0]:0
p[1]:0
p[2]:0
p[3]:0
p[4]:0
&p[0]:0x55578d54ce70
&p[1]:0x55578d54ce78
&p[2]:0x55578d54ce80
&p[3]:0x55578d54ce88
&p[4]:0x55578d54ce90

5.两个用法比较

指针变量只能放地址。

#include <iostream>
using namespace std;

int main()
{
	char buf[]="good";
	char const *p = "good";
	cout<<"sizeof(buf):"<<sizeof(buf)<<"---"<<buf<<endl;
	cout<<"sizeof(p):"<<sizeof(p)<<"---"<<p<<endl;
}

执行结果:

root@host:/home/LinuxShare/004.c++/day07# g++ main.cpp
root@host:/home/LinuxShare/004.c++/day07# ./a.out
sizeof(buf):5---good
sizeof(p):8---good

6.命令行参数

//argc:命令行中字符串个数
//argv[]:指向命令行每个字符串的指针
int main(int argc,char* argv[])
{
}

扩展:
字符串转数值:

atof(字符串); //字符串转成float型数值
atoi(字符串); //字符串转成int型数值

7.引用

rn是n的别名,通过引用实现。r:reference引用

#include <iostream>
using namespace std;

int main()
{
	int n=100;
	int m = n;
	int *p = &n;
	//引用、取别名
	int& rn =n;
	cout<<"&n= "<<&n<<endl;
	cout<<"&m= "<<&m<<endl;
	cout<<"&p= "<<&p<<endl;
	cout<<"&rn="<<&rn<<endl;	
}

执行结果:

root@host:/home/LinuxShare/004.c++/day07# g++ main.cpp
^[[Aroot@host:/home/LinuxShare/004.c++/day07# ./a.out
&n= 0x7ffdc13bbcb0
&m= 0x7ffdc13bbcb4
&p= 0x7ffdc13bbcb8
&rn=0x7ffdc13bbcb0

7.1.传参形参使用引用

#include <iostream>
using namespace std;

//普通传参,形参是实参的复制品
void update_1(int m)
{
	++m;
}

//形参使用引用
void update_2(int& m)
{
	++m;
}

int main()
{
	int a=100;
	int b=200;
	update_1(a); //普通传参
	update_2(b); //形参使用引用
	cout<<"a:"<<a<<endl;
	cout<<"b:"<<b<<endl;
	return 0;
}

执行结果:

root@host:/home/LinuxShare/004.c++/day07# g++ main.cpp
root@host:/home/LinuxShare/004.c++/day07# ./a.out
a:100
b:201

8.函数指针

像声明函数一样定义函数指针,不同在于,要把函数名改成(* 指针名)的形式。

#include <iostream>
using namespace std;

void output(int a[],int n);
int main()
{
	//函数指针定义
	void (*fp)(int a[],int n) = NULL;
	int x[5]={1,2,3,4,5};
	//给函数指针赋值
	fp = output;
	output(x,5);
	fp(x,5);
	return 0;
}

void output(int a[],int n)
{
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<' ';
	}
	cout<<endl;
}

执行结果:

root@host:/home/LinuxShare/004.c++/day07# g++ main.cpp
root@host:/home/LinuxShare/004.c++/day07# ./a.out
1 2 3 4 5
1 2 3 4 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值