西安电子大学计算机考研复试机试(2019)+ C/C++基础补充
常量的定义:
#define pi 3.14
const double pi = 3.14;
define还可以定义语句或片段:
#define ADD(a,b)((a)+(b))
如果数组较大(10^6级别)需要在主函数外面定义
memset(数组名,初始值,sizeof(数组名));
使用getchar()读取字符时,必须要在每个字符串后加入“\0”;此时数组长度多1.
如何将字符串型的数字转换为int型的呢?
int n; char str[100]; gets(str); // 输入 123 sscanf(str,"%d",&n); // 作用:将字符串str以“%d”的格式传输到n中 printf("%d",n); // 输出 123
数组作为函数参数:
参数中数组的第一维不需要写长度,第二位需要写。实际调用时只填写数组名。
当数组作为参数传递时,在子函数中对数组的修改等同于是对原数组的修改,与普通局部变量不同。
如果想返回数组,只能用将数组作为参数传入的方法。(数组不允许作为返回类型出现)
指针*:实际上是一个unsigned类型的整数。
指针变量 p 存放的是地址,&是取地址运算符。p = &a; *p等于a的值
指针作为函数的参数类型,,即将主函数中数据的地址传入子函数,所以子函数中对该地址元素的改变会改变原数据。
引用&:
相当于起别名,这个也可以改变主函数变量的值。
#include<iostream> #include<cstdio> using namespace std; void change(int &n){ n = 1; } int main(){ int a= 10; change(a); cout<<a; return 0; }
指针的引用:
#include<iostream> #include<cstdio> using namespace std; void swap(int* &p1,int * &p2){ int *temp = p1; p1 = p2; p2 = temp; } int main(){ int a = 1,b = 2; int *p1 = &a,*p2 = &b; swap(p1,p2); cout<<*p1<<" "<<*p2<<endl; return 0; }
如果swap中参数没写&,那么函数体中不能那样写。
#include<cstdio> #include<iostream> using namespace std; void swap(int *a,int *b){ int temp = *a; *a = *b; *b =temp; }
int *相当于unsigned int,直接交换这样的整型变量是需要加引用的。
结构体:
定义:
struct Student{
int happy;
int age ;
char name[20];
}Alice,Bob;