结构体,类
对于私有类可以初始化private类,而对共有类public类可以通过初始化函数来限制访问私有类的功能。
#include<iostream>
#include<cstring>
using namespace std;
struct person{
private:
int age,height;
double money;
string book[100];
public:
string name;
void say(){
cout<<"I'm"<<age<<endl;
}
int set_age(int a){//改变age私有参数的值,可以直接传递实参
age = a;
}
int get_age(){
return age;
}
void add_money(double x){
money += x;
}
}person_a,person_b,persons[100];
而结构体和类的作用是一样的。不同点在于类默认是private,结构体默认是public。
当赋值函数时可以简单处理:
这里
#include<iostream>
using namespace std;
struct Person
{
int age,height;
double money;
Person{}
Person(int _age,int _height): age(_age),height(_height){}
Person(int _age,int _height,double _money):age(_age),height(_height),money(_money){}
};
int main(){
Person p = {18,180};
cout<<p.money<<endl;
return 0;
}
另链表
#include<iostream>
using namespace std;
struct Node{
int val;
Node* next;
}*head;
int main(){
for(int i = 1;i <= 5; i++){
Node *p = new Node();
p->val = i;
p->next = head;//头插法建立链表
head = p;
}
for(Node *p = head;p;p=p->next) cout<<p->val<<' ';
cout<<endl;
return 0;
}
建立链表,首先是对链表头节点进行初始化,即strut Node *head操作,(是头节点初始化还是链表初始化来着),然后再通过循环插入建立链表。
题目:
求 1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句 (A?B:C)。
数据范围
1≤n≤50000
样例
输入:10
输出:55
贴代码
class Solution {
public:
int getSum(int n) {
long long a=n;
return (a*(a+1))>>1;
}
};
这里通过位运算代替*2运算即满足题目要求不带乘法。
指针
指针指向变量,算作变量别名。
#include<iostream>
using namespace std;
char a,b;
int main(){
int a = 10;
int* p = &a;//这里是定义一个int*型变量用来保存a的地址
cout<<*p<<endl;//输出为10;
*p = 12;
cout<<*p<<endl;//输出为12;
cout<<a<<endl;//输出12;
int c[10];
}
注意对指针进行加法减法运算时,需要注意指针变量的增减,当指针类型为char*时,p+1,地址只会加一,而当指针为int*时,p+1,指针将会加四,因为int型占四个字节。
贴代码:
#include<iostream>
using namespace std;
int main(){
char c;
char a[5]={1,2,3,4,5};
char *p = a;
cout<<(void*)p<<endl;//输出0x7fff9628ec63
cout<<(void*)p+1<<endl;//输出0x7fff9628ec64
return 0;
}
另对输出地址操作和c++的引用操作需要:
#include<iostream>
using namespace std;
char a,b;
int main(){
char c;
int a[5]={1,2,3,4,5};
cout<<(void*)&c<<endl;//&c做强制类型转换,输出c的地址
cout<<a<<endl;
}
//----------------------------------------------------------------//
#include<iostream>
using namespace std;
int main(){
int a = 3;
int* p = &a;//这是在c中用的指针。
int& p = a;//这是在c++中常用的引用、别名。
*p = 5;
}
这里的int &p,a和p是指向同一个地址