c和c++中的区别

C和C++中的区别

C语言中的指针来传递参数和C++中&来引用参数的区别

在C语言中指针支持
(1)函数的地址调用
(2)动态分配内存
(3)数组的地址引用

#include <stdio.h>
void swap(float *m,float *n)  //这是在函数调用的时候加*
{		//  在C语言中的调用只能是 *加形参
	float t;
 	t=*m;   // 要对内容改变时需要加*来使他的值改变(否则不会改变他们在传递时值不会被保留)
	*m=*n;
	*n=t;
}
int main()
{
	float a,b,*p1,*p2;
	scanf("%f%f",&a,&b);
 	p1=&a;   p2=&b; 
 	swap(p1, p2);
	printf ("%f\n%f\n",a,b);
	return 0;
}

在c++中参数的引用可以直接使用&
c++中指针引用可以
(1)除了调用值(这个值是实参的值)还可以返回被操作的结果;
(当有多个值被改变时&就可以省去很多小细节)

#include <iostream.h>
void swap(float& m,float& n)
{
	float temp;
	temp=m;   //这里改变时不用再写 * ;
 	m=n;
	n=temp;
}
int main()
{
	float a,b;
 	cin>>a>>b;
	swap(a,b);
	cout<<a<<endl<<b<<endl;
	return 0;
}

总结 这里的&引用是可以使子函数有更多的返回值 return只能返回一个状态或参数
在数据结构中可以使多个变量的改变
引用类型作参数的三点说明
(1)传递引用给函数与传递指针的效果是一样的,形参变化实参也发生变化。
(2)引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作;而一般变量作参数,形参与实参就占用不同的存储单元,所以形参变量的值是实参变量的副本。因此,当参数传递的数据量较大时,用引用比用一般变量传递参数的时间和空间效率都好。
(3)指针参数虽然也能达到与使用引用的效果,但在被调函数中需要重复使用“*指针变量名”的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。

C语言的头文件

#include<stdio.h>
#include<string.h>
{
strlen
strcat //eg 可以AABCD变成AABCDAABCD
strcpy //复制到另一个字符串里
stramp //比较字符串的大小(“abc”比"d"小返回负值,相等返回0,大于返回正值)

}
#include<math.h>
{
sqrt (开方)
log //double log(double x)//以e为底的对数
log10 //double log10 (double x)
exp //double exp(double x) ,e的 x 次方
}

c++头文件
#include<iostream>
。。 string s1,s2,s;
。 s=s1+s2(意思是把字符串s1和s2拼在一起
sizeof(s)==sizeof(s1)==sizeof(s2)==8
#include<cstring>
#include<string> //对字符串的处理

sizeof 和 strlen的 区别

sizeof是操作符,不是函数;求某种对象的大小
strlen 是函数,当遇到‘\0’为止;和c++语言的 _.size一样
当使用size时需用 string s 来定义字符串,strlen是需用char s[ ];
char a[10]
, , ,strlen(a)//结果不确定
, , ,sizeof(a)==10
char a[10]={’\0’};
, , ,stlen(a)==0
, , ,sizeof(a)==10;
char a[]=“lrp”
, , ,strlen(a)==3
, , ,sizeof(a)==4//连‘\0’的空间也算上
char *a=“12345uy”
, , sizeof(a)==8//指针的长度
, sizeof(*a)==1//第一个字符的空间
, strlen(a)==7 //该字符串的长度

在c++中的 <string> 头文件(注意和<cstring>的不同)
<string>是对字符串进行操作 (定义string就是可以对字符串进行操作)
一定要清楚是对什么操作

{
	 string s;  //定义一个字符串
}

(1)
最常用的就是 s.size() , s.length()
(2)
输出或修改字符串中的某个字符 s.at(位置)
(3)
在末尾插入字符串 s.append(“”)
在任意位置插入是 s.insert()

**
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a;
	getline(cin ,a);
	a.append(" you");
	cout<<a<<endl;
	a.insert(0,"?/%"); //这也可以是字符串 字符灵活运用
	cout<<a<<endl;
	return 0;
}
**
输入
I love
输出
I love you
?/%I love you

(4)
比较字符串的大小s1.compare(s2)
与c中的strcmp类似
(5)
cop()

#include<iostream>
#include<string>
using namespace std;
string a;
int main()
{
	cin >>a;
	char b[10]; //这是char 要不然找不到位置 如果是string不行
	a.copy(b,4,0);  //这是把a的东西弄到 b 里
	cout<<b<<endl;
	return 0;
}

(6)
删除字符串中的字符
erase( first,end)

#include<iostream>
#include<string>
using namespace std;

int main()
{
	string a;
	getline(cin,a);
	cout<<a.erase(2,6)<<endl;//删除从1位置开始的三个字符	
	return 0}

(7)
交换两个字符串 swap()

#include<iostream>
#include<string>
using namespace std;

int main()
{
	string a,b;
	cin >>a;
	cin >>b;
	a.swap(b); 
	cout<<a <<endl;
	cout<<b ;
	return 0;	
}

字符串使用

这里C++里面有一个 string 字符串的用法
但是C语言里用字符数组来表示字符串
要求配套使用:
sring s;
cout <<s;

char[N];
printf("%s",char);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值