@关于 c与c++知识点,你该了解这些 (一)
关于 c与c++知识点,你该了解这些 (一)
这是我自己在学习c++基础的过程中,顺便复习了下C语言,然后总结的一些小小知识点,希望对大家的学习能够提供一些帮助吧,一起加油、共同进步哦。
第一节
1.
int a; sizeof(int) = sizeof(a); ---求所储存的字节
2.
float aa = 'A' cout << (int)aa << endl; //输出A的数值(强制转化为 int) 注意格式
3.
float f2 = 3e2 //3*10^2 float f3 = 3e-2 //3*0.1^2
4.
bool 真或假 bool flag = false/true(0/1); —除了0为假,其余都为真
5.字符串
(1)
char str[ ] = "hello world" cout<<str<<endl;
(2) string 变量名 =”字符串值” (引用头文件include“string” 有的是在iostream头文件中)
string name[3] = {"张三","李四","王麻子"}; string name=”胖虎”;
6.
int a1 = 10; ++a1*10; //(运算结果为110)先加1后乘以10,
int a1 =10; a1++*10; //(运算结果为101)先乘以10 后加1,先执行表达式,再增加
7.
-= /= %=
int a=10; int b=5; cout<<(a==b); //输出结果为0(假)
8.
rand() % 80; //生成0-79的随机数
rand() % 80+1; // 生成0-80随机数
/* 需要包含头文件 #include “cstdlib” */
// #include ”ctime“ (伪函数) srand((unsigned int)time(NULL)); 利用系统时钟生成伪数字
9.
int a = 10; int b = 20; (a<b?a:b)=100; cout <<a; a=100 cout<<b; //b=2
10.
int a = 354; //个位 a%10 十位 a%100/10 百位 a/100
11.
\t 制表符代替空格
12.
goto flag ; flag: //跳转语句 ---读懂就可,不建议使用
13.
/*数组*/ int arr[5] = {1,2,3,4,5}
/*每个数组占用的内存空间*/ sizeof(arr)
/*每个素占用的内存空间 */ sizeof(arr[0]),
/*数组中元素个数为*/ sizeof(arr) / sizeof(arr[0]) //------重点
14.
/*数组地址 */ int arr[5] = {1,2,3,4,5}
/*数组首整型地址*/ cout<< (int)arr;
/*第一个元素整型地址*/ cout<<(int)&arr[0]; //------重点
15.冒泡排序法
void fun(int c[], int d)
{
int temp=0;
for (int a = 0; a < d - 1; a++)
{
for (int b = 0; b < d - 1 - a; b++)
{
if (c[b] <c[b + 1])
{
temp = c[b];
c[b] = c[b + 1];
c[b + 1] = temp;
}
}
}
}
16.
/*二维数组 总元素*/ sizeof ( arr ) ;
/* 第一行元素 */ sizeof ( arr [0] ) ;
/* 行数 */ sizeof ( arr ) / sizeof ( arr [0] )
/* 列数 */ sizeof ( arr [0]) / sizeof( arr [0] [0] ) )
17.
/* 二维数组首地址 */ cout << arr << endl;
/* 第一行首地址 */ cout << arr [0] << endl;
/*第一个元素首地址 */ cout << & arr [0] [0] << endl; // 此三者相等三者相等
/* 第二行首地址 */ cout << arr[1] << endl;
18.
/*指针就是地址*/ int *p; (p为指针变量) //使用时需要解引用 *p 即可 ( *p解引用)
19.
/*空指针: 用来给指针变量进行初始化,空指针不可以进行访问的*/ int *p = NULL;
//不可再将地址赋值给 p 输出
20.
const修饰指针 ---重点
1)const修饰指针---常量指针
2)const修饰常量---指针常量
3)const既修饰指针又修饰常量
21.
—重点—
//1)常量指针
const int * p = &a; /*指针的指向可以修改,但是指针指向 的值不可修改 */
//2)指针常量
int * const p = &a; /*指针的指向不可以修改,指针的值可以修改 */
//3)既修饰指针又修饰常量
const int * const p = &a; /*指针的指向和指针的值都不可以修改 */
//(如何记忆: const—常量 ,* p —指针 如何用:紧接着 const 的是p / * 紧跟着谁 谁不能操作)
22.
int arr [10], int * p; p = arr ; cout << *p;
//(数组的名称为其的首地址)
23.
值传递,不能修改实参的值,只能修改形参的值。地址传递可以修改实参的值。
24.
结构体
struct student/**** 自己创建的结构体类型为 student, 此类型的变量名字为s1, s2 ***/
{
string name;
int age;
int score;
};
//1 struct student s1;
//2 struct student s2 = { };
//3 创建结构体时顺便创建结构体变量,通过.来访问结构体中的属性
25.
结构体创建自定义类型过程中struct不能省略,但是创建变量的过程c++ struct可以 省略
26.
// 结构体数组 struct 结构体名字 数组名字{个数}={ { },{ } ,{ } }
// 结构体指针 利用->可以通过结构体来访问结构体的属性
student s1 = { "李斯",56,99 };
student * p = &s1;
cout << "姓名:" << p->name
<< "年龄:" << p->age
<< "分数" << p->score;
27.结构体嵌套结构体
struct student
{
string name;
int scroe;
};
struct teacher
{
int id;
string name;
int age;
struct student s1;//学生 s1
};
teacher t;
t.id = 10086;
t.name = "老王";
t.age = 58;
t.s1. name = "小王";
t.s1.scroe = 99;
teacher * p = &t;
cout << "老师姓名:" << p->name
<< "老师工号: " << p->id
<< "老师年龄: " << p->age
<< "老师的学生名字: " << p->s1.name
<< "老师的学生分数: " << p->s1.scroe;
28. 结构体中使用const来防止误操作
29
—重点—
main里面调用函数,形参相当于把参数复制了一遍,增大了储存空间和代码量。将函数的形参变为指针,可以大大减少内存的占用(指针不会复制数据,其只是进行地址传递)
30.
system( “ pause ” ); //请按任意键继续
system( “ cls ” ); //清屏操作
未完待续…
有什么问题欢迎给我留言哦
hexo博客:https:www.ho-brother.ltd