《算法笔记》章二 C/C++快速入门

章二 C/C++快速入门

基本数据类型的细节

1.绝对值在10^9用int

2.long long 在初值后加LL

3.unsigned:标识无符号

4.只用double

5.注意只能用字符数组存储(c语言)

6.不能把字符串常量赋值给字符bianl

char c=”abcd” 是错误的

7.宏定义 : #define / const 是直接将对应部分替换,然后才编译和运行

8.位运算符

2.5数组

2.5.4 memset–对数组中每一个元素赋相同的值

给数组赋相同的值可以使用:memset(string.h) 和 fill(algotithm)

建议初学者只用memst赋值0或-1,因为memset使用的是按字节赋值

memset(数组名,值,sizeof(数组名));

函数

1.以数组作为函数参数是,参数中的数组的第一维不需要填写长度,实际调用也只用填写函数名称。

指针

1.指针实际上是一个unsigned类型的整数

2.*是类型的一部分

3.指针变量通常用来存放指针

4.指针变量可以进行加减法,自增和自减操作

5.对指针变量来说把其存储的地址的类型称为基类型

6.

“`c++
#include<stdio.h>
#include<iostream>
using namespace std;

int main() {
int a[10] = { 1 };
for (int i = 0; i < 10; i++)
{
scanf("%d",a+i);
}
for (int i = 0; i < 10; i++)
{
cout << *(a+i);
}

<pre><code> return 0;
</code></pre>

}

<pre><code class=""><br />7.

</code></pre>

#include<stdio.h>
#include<iostream>
using namespace std;

int main() {
int a[10] = { 1,2,3,4,5,6,7,8,9,10};
for (int* p = a; p < a+10; p++)
{
cout << *p;
}

<pre><code> return 0;
</code></pre>

}

<pre><code class=""><br />8.注意最后输出为5

</code></pre>

#include<stdio.h>
#include<iostream>
using namespace std;

int main() {
int a[10] = { 1,2,3,4,5,6,7,8,9,10};
int* p=a;
int* q=&a[5];

<pre><code>printf("%d\n",q);
printf("%d\n",p);
cout<<q-p;

return 0;
</code></pre>

}

<pre><code class=""><br />9.当指针作为函数参数,市委将变量的地址传入函数,在函数中对这个地址中的元素进行改变,则原来的数据也会被改变

### 2.7.4 使用指针变量作为函数参数

### 2.7.5 引用

## 2.8 结构体struct的使用

### 2.8.1 结构体的定义

定义一个结构体的基本格式:

</code></pre>

sturct Name{

//一些基本的数据结构或者自定义的数据类型

}

<pre><code class=""><br />例子

</code></pre>

struct studentInfo{
int id;
char gender;
char name[20];
char major[20];
}Alice,Bob,stu[1000];

<pre><code class=""><br />大括号外:定义了Alice Bob两个结构体变量 stu[1000] 结构体数组

结构体里**不能定义本身**,但可以定义自身类型的指针变量

</code></pre>

struct node{
node n; //不能定义node类型变量
node* next; //可以定义node*型指针变量
}

<pre><code class=""><br />### 2.83 访问结构体内部元素

访问结构体有: “`.“` 和“`->“`

定义studentInfo

struct studentInfo{
int id;
char name[20];
stundentInfo* next;
}stu,*p;


访问stu中的变量为 stu.id stu.name stui.next 访问p中的元素 (*p).id (*p).name (*p).next 此方法比较复杂,引入一种访问结构体指针变量内元素的写法 p->id p->name p->next ### 2.8.3结构体的初始化(构造函数) 如果自己定义了构造函数,则不能不经初始化就定义结构体变量,则可以重构?(应该是这个名词)多个构造函数 构造函数的两种写法 ```c++ studentInfo(int _id, char _gender) id = _id; gender = _gender; } studentInfo(int _id, char _gender) :id(_id),gender(_gender) {} </code></pre> 实例: ```c++ #include<stdio.h> #include using namespace std; struct Point { int x, y; Point() {} Point(int _x, int _y) :x(_x), y(_y) {} } pt[10]; int main() { int num = 0; for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 3; j++) { pt[num++] = Point(i, j); } } for (int i = 0; i < num; i++) { cout << pt[i].x << " " << pt[i].y<<endl; }
return 0;

}


## 2.9补充 1.如果要读入一整行:``getline()`` 2.string 容器

string str[100];
cin.getline(str,100)
```

2.9.2 浮点数比较

暂时跳过

2.10 黑盒测试

2.10.2 多点测试

暂时跳过

发表评论