西安电子大学计算机考研复试机试(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

 

西安电子大学计算机考研复试机试(2019)+ C/C++基础补充

数组作为函数参数:

参数中数组的第一维不需要写长度,第二位需要写。实际调用时只填写数组名。

当数组作为参数传递时,在子函数中对数组的修改等同于是对原数组的修改,与普通局部变量不同。

如果想返回数组,只能用将数组作为参数传入的方法。(数组不允许作为返回类型出现)

指针*:实际上是一个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;