学习c/c++,返回值函数很重要,现在总结一下关于函数返回值的一些东西,以示例为主,平常经验所得,有不妥处请指出,十分感谢!
先把简单的写上:
#include<stdio.h>
#include<string.h>
#include<math.h>
//#include<map>
#include<set>
#include<deque>
#include<queue>
#include<stack>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
#define da 0x3f3f3f3f
#define xiao -0x3f3f3f3f
#define clean(a,b) memset(a,b,sizeof(a))// 水印头文件
void emp()
{
cout<<"void函数无返回值"<<endl;
return ;//此处无返回值
}
int intt()
{
cout<<"int型函数返回int值且必定返回int值"<<endl;
return 0;//此时的返回值为int型的0;
}
double doublee()
{
cout<<"double型函数返回double值且必定返回double值"<<endl;
return 0.0;//double的0,可以是小数;
}
ll lolo()
{
cout<<"ll型函数返回ll值且必定返回ll值"<<endl;
return 0;// ll的0;
}
int main()
{
emp();
cout<<intt()<<endl;;
cout<<doublee()<<endl;
cout<<lolo()<<endl;
}
ok,水完简单的,我们来研究一下对于指针变量的返回值:
话说这还是在写链表的时候研究返回指针的问题:
其实返回的
#include<stdio.h>
#include<string.h>
#include<math.h>
//#include<map>
#include<set>
#include<deque>
#include<queue>
#include<stack>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
#define da 0x3f3f3f3f
#define xiao -0x3f3f3f3f
#define clean(a,b) memset(a,b,sizeof(a))// 水印头文件
struct node{
int data;
node *next;
};
/*
5
1 2 3 4 5
*/
node *chuancan(node *head)
{
node *can=(node*)malloc(sizeof(node));
cout<<&can<<" "<<endl;
can=head;
while(1)
{
if(can->next==NULL)
return can;
can=can->next;
}
}
int main()
{
node *head=NULL;
node *can=(node*)malloc(sizeof(node));
head=can;
if(head->next==NULL)
{
cout<<"f"<<endl;
return 0;
}
int n;
cin>>n;
int i,j;
cin>>head->data;
head->next=can;
for(i=1;i<n;++i)
{
node *next=(node*)malloc(sizeof(node));
cin>>next->data;
can->next=next;
if(i==n-1)
can->next=NULL;
else
can=next;
}
can=head;
while(can->next!=NULL)
{
cout<<can->data<<" ";
can=can->next;
}
cout<<head->data<<" "<<head->next<<" "<<&head<<endl;
head=chuancan(head);//head的地址没有改变,只是里面的内荣改变了,里面的东西变了,这个我迷了好久
cout<<head->data<<" "<<head->next<<" "<<&head<<endl;
}