买了域名如何做网站,wordpress浮动导航菜单,聚合搜索引擎入口,高端设计公司C特点及优势 #xff08;1#xff09;实现了面向对象#xff0c;在高级语言中#xff0c;处理运行速度是最快#xff1b; #xff08;2#xff09;非常灵活#xff0c;功能非常强大#xff0c;相对于C的指针优势#xff0c;C的优势为性能和类层次结构#x…C特点及优势 1实现了面向对象在高级语言中处理运行速度是最快 2非常灵活功能非常强大相对于C的指针优势C的优势为性能和类层次结构 3严谨、精确和数理化........
C和C语言的区别 C语言是面向过程的语言C是面向对象的语言。 C兼容C语言的头文件 #include cstdio
标准输入输出
输出流对象std::cout 可以自动识别基本类型的输出类型 编译g demo.cpp 输入流对象std::cin 自动识别基本类型的数据类型 练习输入一个字符 如果是大写 则转为小写 如果是小写则转为大写
#include iostream
int main()
{char c;std::cin c;if (c a c z){//a a - 32;std::cout (char)(c - 32) std::endl;}else if(c A c Z){c 32;std::cout c std::endl;}return 0;
}
cin同时获取多个值
#include iostream
int main(int argc, char const *argv[])
{int a;char c;std::cin a c;std::cout a c std::endl;return 0;
}
命名空间 避免命名空间污染C的标准库都是在std命名空间中定义的所有的类和对象。
表示方法 方式一using namespace std; 方式二std::cout
自定义命名空间
#include iostream
using namespace std;
namespace teacher
{char name[20] zhangsan;void showName(){cout name endl;}
}
namespace worker
{char name[20] lisi;void showName(){cout name endl;}
}
using namespace teacher;
using namespace worker;
int main(int argc, char const *argv[])
{//cout name endl; //报错的位置cout teacher::name endl;cout worker::name endl;cout ----------- endl;teacher::showName();worker::showName();return 0;
}teacher和worker命名空间中都有name如果不写命名空间会出现访问不明确的错误。 C增加bool类型 1bool是基本数据用来表示逻辑真假 2非0为真 true0为假 false 3增强程序可读性 int isFull(); bool isFull();
字符串处理 1延续C风格字符数组 char s[20] hello; 字符指针 char *s hello; 2C标准库中string类string不是基本数据类型而是类类型对象类型
创建string对象
#include iostream // iostream头文件中包含string头文件所以可以省略
//#include string
using namespace std;
int main()
{string s1 hello world;string s2(hello s2);string s3(s2); // s3是用s2复制的string类型对象string s4 s1; //string对象复制可以通过赋值符号直接将值赋予目标对象 cout s1: s1 endl;cout s2: s2 endl;cout s3: s3 endl;cout s4: s4 endl;return 0;
} 字符串拼接和比较 string只能拼接string拼接其他类型需要使用sprintf()进行复杂的字符串格式化
#include iostream
#include string
using namespace std;
int main()
{string s1 hello;string s2 world;s1 s2;//把s2的字符串追加到s1后面couts1endl;//s1 1;//错误 string类型的拼接只能拼接string类型或者C风格字符串char buf[100];sprintf(buf,%s%d,s1.c_str(),1);//c_str()string类型或者C风格字符串coutbufendl;//字符串比较cout(s1 s2)endl; // 比较的是第一个不相等的ASCII码值cout(s1 ! s2)endl;return 0;
} empty和size函数 empty()判断空如果字符转为空返回true否则返回false size()返回字符串长度和strlen()相同
#include iostream
using namespace std;
int main()
{string s1 ;cout s1.empty() endl;string s2 ;cout s2.empty() endl;string s3 hello world;cout s3.size() endl;return 0;
} cin和getline函数输入字符串 cin遇到空格结束 getline函数输入字符串遇到\n结束输入C中无法使用gets函数所以用此函数
#include iostream
using namespace std;
int main()
{string s1;cout please input s1 endl;// 参数1cin输入流获取字符串参数2读取到的字符串存放为止getline(cin,s1);cout getine s1: s1 endl;string s2;cout please input s2 endl;cin s2;cout cin s2: s2 endl;return 0;
} 引用 引用的本质就是给变量起别名。
#include iostream
using namespace std;
int main()
{int a 10;int b a;return 0;
}
特点重点 1必须进行初始化 2引用不能单独存在也不能改变指向 3普通引用不能用常量或者临时值进行初始化
引用作为形参类型
交换ab的值
#include iostream
using namespace std;
void swap(int x,int y)
{int temp;temp x;x y;y temp;
}
int main()
{int a 10,b 20;swap(a,b);cout a b endl;return 0;
}
引用作为返回值 引用作为返回值是返回变量本身而不是一个临时的值要保证变量的生命周期足够长。 const修饰的引用常引用
指针的引用和数组的引用 引用和指针的区别重点 1不存在空的引用引用必须连接到一块合法的内存指针可以是空指针。 2引用被初始化为一个对象就不能被指向到另一个对象 指针可以在任何时候指向到另一个对象。 3引用必须在创建时被初始化指针可以在任何时间被赋值。
动态内存分配 1堆区自定义生命周期只申请不释放堆区内存会内存泄漏 2栈区作用域结束变量才释放 3静态变量程序结束才释放
动态内存的申请和释放 new和delete C中new关键字运算符申请的内存空间是有类型的给内存初始化返回指定类型的指针并且可以自动计算所需大小。
申请变量
#include iostream
using namespace std;
int main()
{int* p new int; // 指针变量p指向在堆区申请一个int类型的内存*p 10;delete p; // 释放new在堆区申请int类型空间p NULL;return 0;
}
申请数组
#include iostream
using namespace std;
int main()
{int* p new int[10]; // 在堆区申请一个int类型的10个元素的数组delete[] p; // 释放数组p NULL;return 0;
}
释放指针置空 delete释放的是指针指向的内存指针是一个变量只有在程序结束时才被销毁。释放了内存空间后原来指向这块空间的指针还是存在只不过现在指针指向的内容垃圾区域所以释放内存后把指针指向NULL防止指针在后面不小心又被解引用。
new和malloc的区别重点 1malloc是库函数new是关键字运算符 2malloc申请的空间没有类型void *需要强转new申请的直接初始化 3new会调用构造函数
函数延伸
重载 英文叫做overloadC中允许创建多个名称相同的函数需要满足 1在同一作用域内函数名相同形参列表不同类型或者个数不同返回值不作为决定性条件 2如果参数列表相同但返回值不同是不可以重载的。
函数默认参数 正常来说函数调用时形参从实参获取值但是还可以给形参一个默认值这样形参就不必从实参取值了一旦某个形参被赋予了默认值那么其后面的所有形参都必须有默认值。 当函数的声明和定义分开写时只能在声明的部分写默认参数
#include iostream
using namespace std;
void fun(int a 10, int b 20, int c 30);
int main()
{fun();fun(1);return 0;
}
void fun(int a, int b, int c)
{cout a b c endl;
}
类的初识
栈区创建对象
#include iostream
using namespace std;
class Student
{
public:string name;int age;void set(string n, int a){name n;age a;}
};
int main(int argc, char *argv[])
{Student s; //栈区实例化对象//直接对成员变量赋值s.name zhangsan;s.age 18;//调用成员函数间接赋值s.set(lisi,20);return 0;
}堆区创建对象
int main(int argc, char *argv[])
{Student *s new Student() ; //在堆区创建一个Student类型对象//直接对成员变量赋值s-name zhangsan;s-age 18;//调用成员函数间接赋值s-set(lisi,20);delete s;s NULL;return 0;
}