大三上C复习
二进制原码、反码、补码
原码
反码
补码:反码+1
如何从补码到原数:(补码-1)->01对调(表示正负号的不对调)-> 二进制相加
ASCII编码
数字=字符时,其值是该字符对应的ASCII编码
字符串=数字时同理
条件表达式
expr1 ? exp2:expr3; |
if expr1 is True then expr2 else expr3
时间复杂度
数组
1、正确的初始化
int n[5] = {1,2,3,4,5}; |
错误示例:
不要使用超过数组长度的序号:
int a[100]; a[100] = 40; |
虽然长度是100,但序号是[0,99]
2、数组在函数的传递:名称且不带括号
int myArray[24]; |
字符串数组
char string1[] = { 'f', 'i', 'r', 's', 't', '\0' } |
数组的名字就是第一个元素的地址
char *s = "SPEIT"; *s = 'c'; |
在C语言中,字符串常量是不可更改的。s
是一个指向字符串常量 "SPEIT"
的指针,当你尝试修改这个字符串常量中的字符时,会导致错误。
修改的话应定义为字符串数组
char s[]= "SPEIT"; s[0] = 'c'; |
多维数组
二维数组在初始化时一般只确定列的个数
char vowels[][5] = { |
类型强制转换
注意:把值从较高类型转换到较低类型,会引起数据的丢失
(最低类型)bool -> char -> unsigned char -> short -> unsigned short -> int -> unsigned int -> long int ->unsigned long -> float -> double -> long double ;
数值调用和实例调用(Call by Reference)
Call by Reference
void addone(int *n) { |
取地址:&
a时=是数组名称,a[1]中的[]其实也是一种取值运算
指针
1、初始化:Initialize pointers to 0, NULL, or an address
2、错误示例:
int *c; |
3、const
int *const myPtr = &x; |
4、b[n] = *(b + n)
5、对一个二维数组同理:
b[m][n] = *(*(b+m)+n); |
6、指针的指针
int (*p)[n]; |
创建了行数不确定,列数为n的数组;指针p指向该数组的第一个值
int *p[n]; |
创建了n个内容为指针的数组;
Comment