东北大学cs专业课复习笔记——c语言
作者:互联网
笔记所有内容参考《东大红皮书》,由个人整理。
- 若定义 int a[10]; int* p = a; 请写出至少3种数组a第i个元素的方式。
1. a[i - 1] 2. p[i - 1] 3. *(a + i - 1) 4. *(p + i - 1)
- 如果想通过一个函数获得多个返回值,请至少写出2种实现方法,并举例说明。
//1. 变量地址方式
void func(int* a, int* b) {
*a = 1;
*b = 2;
}
//2. 全局变量方式
int a, b;
void func() {
a = 1;
b = 2;
}
- 举例说明结构体和联合体的区别。
/*
在结构体中各成员有各自的内存空间,一个结构体变量的长度大于等于各成员长度之和;
而在联合体中,各成员共享一段内存空间,一个联合体的长度等于各成员中最长的长度。
结构体st占5个字节,而联合体un占4个字节。
*/
struct st {
int i;
char c;
};
union un {
int i;
char c;
};
- 写出说明define与typedef的区别,举例并解释。
1. define是一种宏定义,而typedef是一种类型定义;
2. define是在预编译时进行简单的替换,不做正确性检查,而typedef是在编译期间进行类型定义,编译器会做正确性检查;
#define INT int
typedef int INT;
- 写出说明两种判断字符串结束的方法,举例并解释。
//1. c风格字符串方式,字符串最后一个字符为'\0'
while(str[i] != '\0'){ ++i; }
//2. 字符串长度方式。
for(i = 0; i < strlen(str); ++i) {}
- 当函数的形参为数组时,请写出对应的2种实参形式,举例并解释。
//1. 实参为一维数组
int a[2];
void func(int array[], int length);
void func(int* array, int length);
//2. 实参为一维指针数组
int* a[2];
void func(int* array[], int length);
void func(int** array, int length);
//3. 实参为二维数组
int a[2][3];
void func(int array[][3], int length);
void func(int (*array)[3], int length);
标签:typedef,东北大学,void,int,length,专业课,func,cs,array 来源: https://www.cnblogs.com/vergilwu/p/11666389.html