一.基础知识
1.了解了内存单位bite,字节,kb,mb,gb,tb,pb等相关基础概念,以及换算关系,除了一字节是8个bite,其它相邻两个内存单位的换算就是1024倍。
2.了解了数据类型,如int,short,double,float,char等
3.打印整型要有%d,打印字符%c,打印字符串%s,打印地址%p等。
4.c语言中表示真假:0表示假,非0表示真。
二.学习过程中的重难点
1.字符串的结束标志:'\0'
int main() {
char a[] = "abcd";
printf("%d\n", strlen(a)); //4
char b[] = { 'a','b','c','d'};
printf("%d\n", strlen(b)); //随机值
return 0;}
//像字符数组a默认是最后存在'\0'的,所以计算长度时自然正常地结束,而b是由一个个单独的字符组成的数组,'\0'出现的位置也是随机的。'\0'就是一个转义字符
2.整个转义字符算一个长度单位(\ddd也代表一个转义字符,但d不能超过八,因为ddd为八进制数)
printf("%d\n", strlen("c:\test\32\test.c")) //13
3.输入函数scanf()
int main(){
int input = 0;
printf("你要好好学习吗:");
scanf_s("%d", &input);
if (input == 1)
printf("好offer\n");
else
printf("完蛋\n"); }
4.位操作符
int a = 3; //011 转化为二进制状态 进行位操作
int b = 5; //101
int c = a & b; //001 相同为1 ,相异为0(两个都为0时那还是0)
int d = a ^ b; // 110 异或:对应二进制位相同则为0,对应的二进制相异则为1
int e = a | b; //111 相同位置有1那就是最后结果那个位置也有1
printf("%d\n", c); //打印出来的还是十进制数
printf("%d\n", d);
5.移位操作符
int a = 3; //011
int b=a <<1 ; // 110 二进制下面的移位操作 << 左移 >> 右移
printf("%d\n", b); //6
6.计算数组的大小
int arr[] = { 1,2,3 };
printf("%d\n", sizeof(arr)); //计算数组的大小,返回的是字节
7.取反符号
int a = 0; //~取反符号
int b = ~a; //一个属用字节来表示时,字节最前面的数(符号位)为1时,表明为负数,负数在内存存储的时候是二进制的补码
使用的 ,打印的为原码,原码符号位不变,其它取反变为反码,反码加一变成补码
printf(" % d\n", b); //-1
8.前置运算符和后置运算符
int a = 10;
int b = a++; //先用再加
printf("%d\n %d\n", a, b); // 11,10
int c = 5;
int d = ++c; //先加后用 11,11
printf("%d\n %d\n", c, d);
9.三目操作符,条件操作符
int a = 10;
int b = 20;
int max = 0;
max = (a > b ? a : b); //如果前面的条件为真,则返回a;反之为b
printf("%d\n", max);
10.宏的概念
#define MAX(x,y) (x>y?x:y) //定义宏(比运用函数更为简便)
int main(){
int a = 10;
int b = 20;
int max = 0;
max = MAX(a, b);
printf("max=%d\n", max);
return 0;
}//类似定义宏 #define MAX 100(表明已经定义好MAX=100的数)
11.指针
int main() {
int a = 1;
int* p = &a;
printf("%p\n", &a); //打印出a的地址
printf("%p\n", p); //打印出a的地址
return 0;
}
int main() {
int a = 1;
int* p = &a;
*p = 20; //*解引用操作符
printf("%d\n", a); //新值20
printf("%d\n", sizeof( p)); //8 64位的电脑指针都占8个字节
return 0;
}
12.结构体
struct book {
char name[20];
short price;
};
int main(){
struct book b={"哈哈哈",30 };
struct book* c = &b;
printf("书名是:%s\n", c->name);
printf("价格是:%d\n", c->price);
printf("书名是:%s\n", (*c).name);
printf("价格是:%d\n", (*c).price);
printf("%s\n", b.name);
printf("%d\n", b.price);
strcpy(b.name, "c++"); //字符串拷贝,前面是字符串的目的地,后面是要改成的值(改变char值的一种方式)
printf(" % s\n", b.name);
return 0;
}