免费网页设计成品网站,3小说网站开发,友博国际个人中心登录,整站优化方案c基础入门
#include iostream
#include cmath
#include unistd.h // 总结#xff1a;按照书写依次往下#xff0c;先看 iostream 再看 cxxx 最后 xxx.husing namespace std; // 本质#xff1a;自定义作用域#xff0c;作用域就在该命名空间内部。…c基础入门
#include iostream
#include cmath
#include unistd.h // 总结按照书写依次往下先看 iostream 再看 cxxx 最后 xxx.husing namespace std; // 本质自定义作用域作用域就在该命名空间内部。一个命名空间内部名字不重名就可以不同命名空间可以相同int main()
{// 输出cout abc 100 endl; // cerr abc; 不带缓冲区输出无需换行缓冲// 输入int n;cin n m; // endl 换行符return 0;
}
// std 看作班级std::cout 就是告知某班某成员避免反复书写直接写在程序开头
c编译
g old_name -o new_name
字符串
string 会自动分配扩大内存空间// 空间扩展演示
string s14;
cin s14; // 输入123456789
cout s14.capacity() endl; // 空间大小 15 默认空间大小就是15若后续超出范围会自动扩展
cout s14.length() endl; // 实际大小 9// 输入
sreint s;
cin s;
cout s endl;// 赋值
string s1 abcd;// 复制
string s2;
s2 s1;// 拼接
string s3;
s3 xyz s1;
s3 123;// 比对
if(s1 abcd)cout s1 abcd endl;
if(s1 aBcd)cout yes endl; // 挨个按照 ascoll 码值来对比// 展示循环打印字符串
string s[10] abcdef;
for(int i 0; i s.length; i)
{cout s[i];
}
cout endl;// 删除
string s();
cout s endl;
s.erase(4,5); // 从第四个位置开始删除删除5个索引
cout s endl;// 查找
cout s.find(all, 30, 100) endl; // 从下标索引30开始向后查找一直查到100
cout s.find_last_of(So) endl; // 从后往前查询// 替换
string s(123456789);
cout s.replace(5, 5, A) endl; // 将下表为5的位置开始替换后面5个为A
引用
概念给一个已有的对象变量取别名 号放在定义语句当中就是取别名// 变量
int a 100;
int b a; // 让 a 的别名叫做 b// 数组
int c[10] {1,2,3};
int (d)[10] c;// 指针
int *p a; // 此时是取地址不同于取别名
int *(q) p;注意1、不可以给常量取引用int r 100; 常量是匿名的2、引用必须同时定义与赋值3、相较于指针更加快速高效// 例如交换两个数的值
void swap(a, b)
{int temp;temp a;a b;b temp;
}
int main()
{int a 1, b 2;swap(a, b);cout a b endl;return 0;
}
函数默认参数
void f(int a, float b 3.14);void f(int a, float b)
{cout a endl;cout b endl;
}int main()
{f(100, 1.23); // 显式的给 b 传递参数 1.23f(200); // b 使用默认值3.14
}注意1、为防止二义性默认值参数只能位于最右边2、声明指定默认值定义不写默认值
函数重载
本质就是同一个函数名有不同的版本。
函数重载时调用函数是在编译期间就确定了具体的调用对象因此将函数重载叫做静态联编
可以形成重载的情形只要满足一个即可
1、参数个数不同
2、参数类型不同
3、参数顺序不同
3、类方法的const属性
4、普通指针与常目标指针
// 参数个数不同
void f(int a);
void f(int a, int b);// 参数类型不同
void f(int a);
void f(float b);// 参数顺序不同
void f(int a, float b);
void f(float a, int b);// 类方法的 const 属性
class Node
{void f(int a);void f(int a)const;
};// 普通指针与常目标指针 查看匹配度
void f(char *p);
void f(const char *p);
不可以形成重载的情形
1、函数名、函数参数列表完全一致
2、函数返回值类型差异
3、静态函数声明static
4、const型变量包括常指针
// 函数名、函数参数列表完全一致
void f(int a);
void f(int a);// 函数返回值类型差异
void f(int a);
int f(int a);// 静态函数声明static
void f(int a);
static void f(int a);// const 型变量包括常指针
void f(int *a);
void f(int * const a);
堆内存管理
new分配堆内存
delete释放堆内存
int main()
{// 分配单个int *p new int; // 要在堆内存开辟一块新的可以放下 int 类型的空间*p1 666;delete p1;// 分配多个char *k new char[1000];for(int i 0; i 1000; i){k[i] 666;}delete [] k;return 0;
}注意
相比于 malloc 的区别delete 与 free类似于此1、new 会自动调用类的构造函数而 malloc 不会
枚举循环
int main()
{int a[] {1,2,3,4,5};for(int i : a) // 用 i 来依次取得数组内部数据{cout i endl;}return 0;
}int main()
{liststring names;names.push_back(1);names.push_back(2);names.push_back(3);for(string n : names)cout n endl; // 将名字全部打印出来前面的类型对应后面需要打印的元素的类型return 0;
}// 若是版本不支持则 g old_name -o new_name -stdc11