- 变量,运算符,条件选择,循环,数组,函数篇
- 指针
- 结构体
- 程序的内存模型
- 类,对象
- 文件的 *** 作
- 模板
- STL学习
- 常用遍历等算法
持续更新ing~
#include
using namespace std;
#define day 7
int main()
{
// cout<<"hello world!"<
int a=10;
cout<<day<<endl;
const int month =12;
// month=24;//报错,const修饰也是常量,不可修改
//1.5 关键字,不可以关键字为变量命名
/*1.6标识符
标识符不能是关键字
标识符只能以数字,下划线,字母组成
标识符第一个字母只能是字母或吓坏谢娜
标识符区分大小写字母
(起名最好是见名知意)
*/
//数据类型
/*注意赋值不能超过各个类型最大范围,例如int:-32768~32767
sizeof 求出数据类型占用内存大小
sizeof (数据结构/变量)
short
char str1[]="hello world!";
string str2="hello world!";
布尔类型
bool flag=true/false(1/0)
占用1个字节
数据的输入
cin>>变量
///
运算符
算术运算符
两个小数可以相除,结果也可以是小数
两个整数相除,结果仍然是整数
% 取模/取余,除数也不能为0
两个小数不能做取模运算
递增递减运算符
前置,后置
前置递增,先让变量+1,然后进行表达式运算
后置递增,先进行表达式运算,后+1
a=2;b=++a;a=3,b=3
a=2;b=a++; a=3,b=2
a=2;b=--a;a=1,b=1
a=2;b=a--; a=1,b=2
赋值运算符
=,+=,-=,*=,/=,%=
比较运算符
==.!=,>,<>=,<=,返回值是0或1,真为1,假为0
逻辑运算符
!.&&,||
cout<<(a&&b)<
系统生成随机数
int num=rand()%100+1//生成0+1~99+1随机数
do while 先执行一次循环语句,再判断循环条件
num=0;
do
{
cout<{1,2,3},
{4,5,6}};
int arr2[2][3]={1,2,3,4,5,6,};
int arr3 [][3]={1,2,3,4,5,6};
二位数组名
查看二位数组所占用空间
查看二维数组首地址
sizeof(arr) //二维数组占用内存空间
sizeof(arr[0]) //二位数组第一行占用内存空间
sizeof(arr[0][0])
二位数组首地址 (int)arr
二维数组第一行首地址(int)arr[0]
二维数组第二行首地址(int)arr[1]
///
函数
int add(int num1,int num2)
{
int sum =num1+num2;
return sum;
}
值传递,函数调用时,实参将数据传给形参
形参发生改变,不会影响实参数
函数常见样式
1.无参无返
void test01()
{
cout <<"this is test01"<
using namespace std;
#include "swap.h
*/
system("pause");//按任意键继续
return 0;
}
指针
//指针
//可以通过指针来保存一个地址
int *p;
p=&a;
// 通过使用指针,解引用*,制找到指针指向的那个内存,可进行修改
*p=1000;
a=1000;*p=1000;
//指针所占用的内存空间,32位 *** 作系统占用4位字节,64位 *** 作系统占用8位字节,无论是什么数据类型,例如int,double,char
//空指针:指针向量指向内存中编号为0的空间,用途:初始化指针,空指针指向的内存是不可访问的
int *p=NULL;
*p=100; //可以修改指向,不能直接访问,0~255是系统占用,不允许用户访问
//野指针,指向非法的内存空间
int *p=(int*)0x1100;
cout<<*p<<endl; //报错,访问权限冲突,程序中避免出现野指针
//空指针和野指针都不是自己申请的空间,因此不要访问
//const 修饰指针
/*
1.const 修饰指针 -----常量指针,特点:指针的指向可以修改,但是指针指向的值不能修改 const int *p=&a *p=20错误,p=&b,正确
2.const 修饰常量-------指针常量,特点:指针的指向不可以修改,但指针指向的值可以修改 int *const p,*p=&a *p=20正确,p=&b,错误
3.const 既修饰常量又修饰指针,特点: 指针的指向,指针指向的值都不可以修改,const int * const p=&a,*p=&a *p=20错误,p=&b,错误
*/
//指针和数组,利用指针来访问数组中元素
int arr[10]={1,2,3,4,5,6,7,8,9};
int *p=arr;
*p=1;
p++;//p四个字节
*p=2;
//指针和函数
//地址传递,形参修改实参
结构体
//属于用户自定义的数据类型,允许用户存储不同的数据类型
//语法 strcut 类型名称 {成员列表}
/*定义
struct 结构体名 变量名
struct 结构体名 变量名={成员1值,成员2值,...}
定义结构体时顺便创建变量
*/
struct Student
{
/* data */
string name;
int age;
int score;
};
struct Student s1; //struct 关键字可以省略
s1.name="张三";
s1.age=18;
s1.score=100;
struct Student s2={"李四",19,80}; //struct 关键字可以省略
struct Student
{
/* data */
string name;
int age;
int score;
}s3;
s1.name="王五";
s1.age=20;
s1.score=37;
//结构体数组
struct Student stuArray[3]={
{"张三",18,100};
{"李四",28,99};
{"王五",39,98};
};
//结构体指针
struct Student stu={"张三",18,100};
Student *p=&stu;//类型要匹配
cout<<"姓名:"<<p->name<<"年龄"<<p->age<<"分数"<<p->score<<endl; //指针通过 ->可以访问成员
//结构体嵌套结构体
struct teacher
{
/* data */
int id;
string name;
int age;
struct Student stu;
};
teacher t;
t.id=100000;
t.name="老王";
t.age=45;
t.stu.name="小王";
t.stu.age=18;
t.stu.score=80;
//结构体做函数参数,传递方式两种:1.值传递,地址传递
void printfStudent(struct Student s)
{
cout<<"姓名:"<<s.name<<"年龄"<<s.age<<"分数"<<s.score<<endl;
}
//地址传递
void printfStudent1(struct Student *p)
{
cout<<"姓名:"<<p->name<<"年龄"<<p->age<<"分数"<<p->score<<endl;
}
//结构体中const 防止修改,误 *** 作
void printfStudent1(const struct Student *p)
{
//p->age=100;//报错,禁止修改
cout<<"姓名:"<<p->name<<"年龄"<<p->age<<"分数"<<p->score<<endl;
}
string name ="teacher";//字符串xiangjia
name +='a';
system("pause");//按任意键继续
return 0;
}
程序的内存模型
类,对象
文件的 *** 作
模板
STL学习
常用遍历等算法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)