2024.7.2

* 解释语言:由另一程序理解程序并运行

  编译语言:翻译为机器语言再由机器执行

*题目中输入是什么格式,scanf里面就敲成什么格式

2024.7.4

*浮点数与整型运算,强转浮点数

*double-->输入%lf    浮点-->输出%f

*单目运算符(+-),优先级最高  |eg。a*-b(a和b相反数相乘)

*a=10-->a++=10,a=11  |a=10-->++a=11 a=11

*16进制-->“%x”

2024.7.5

*关系判断真为1,假为0     printf("%d",5==3)---->0

   eg int r=3>0    故r=1

*随机整数代码 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
	srand(time(0));
	int a=rand();
	printf("%d",a%100);
	
	return 0;
}

*x%n  得到一个(0-n-1]范围内的数

2024.7.6

*goto out;-------------------------->out:(嵌套循环中用于直接到达某个位置,out由自己设定)

cuo*保留两位小数 “%.2lf”

2024.7.7

*查看变量所占内存 sizeof(int/double/...)

ps.sizeof是静态的,即()内的运算不会发生,如a++等价于a,a+1.0=8(double)

*int用于表达寄存器,即不同设备上int的大小不同

*unsigned 使得负数部分补码无意义,从而扩充正数部分一倍的范围(即纯二进制运算)

*%d--->(<=int)    %ld--->long long     %u--->unsigned    %lu--->unsigned long long 

*8进制--> 0..     16进制--->0x..

*%o---->8进制     %x(X)----->16进制

*%e---->输出科学计数法

*printf输出nan表示不存在的浮点数        printf输出inf表示超过范围的浮点数

*判断浮点数相等

因为浮点数有精度---->fabs(a-b)<1e-12(用于比较的数由数据类型决定)

*字符输入输出%c

%x:无符号十六进制整数(字母小写,不像上面指针地址那样补零)

%X:无符号十六进制整数(字母大写,不像上面指针那样补零)

%x、%X和%p的相同点都是16进制,不同点是%p按编译器位数长短(32位/64位)输出地址,不够的补零

2024.7.10

*逃逸字符

\b 回退一格(用后面的内容代替前面的内容)

\t  下一制表位

*输入(严格要求明确输入的大小)
short--->%hd

*bool------>   #include <stdbool.h>

*for(int i=0,int j=10;i<j;i++,j--)

2024.7.12

*块内可以定义与外部同名的变量,该变量在块内覆盖外部该变量的值

2024.7.17

*数组的集成初始化 a[]={1,2,3}--->a[0]=1 a[1]=2  a[2]=3

*C99 指定位置赋值

a[10]={[0]=1,2,[3]=4} -->a[0]=1,a[1]=2,a[3]=4,其余全部为零

*将一个数组的值赋给另外一个数组只能通过遍历

*用sizeof求数组长度 length=sizeof(array)/sizeof(array[0])

*数组在作为函数参数时

1.不能赋予大小,即只能写成a[]

2.不能利用sizeof求大小

2024.7.22

*“,”作为运算符,整个表达式最后的一个值即为表达式的值

*   ‘0’ 与‘\0’ 意义不同,‘\0’用于标志字符串的结尾,字符串计算长度不包括‘\0’,占空间但不影响长度

* 字符串以数组形式存在,以数组或指针(居多)形式访问

2024.9.14

*取地址的对象只能是变量,i++,i+i不可以

*指针类型的变量就是保存地址的变量

*表示int型指针变量-->int *p

//对于指针参数的函数
void f(int *p);
//使用时格式为
f(&i);
c语言无法直接传参,通过地址访问并修改
void (int *p){
    *p=5;
}

-----    main---->  int *p=&i; printf("%d",i);

*函数返回值只能有一个,如果想返回多个值,void+指针

*int sum(int *a)与int sum(int a[])是等价的(作为函数原型)

*const加在变量前面意味着变量无法被修改,是常量

    int * const q=&i---------->*q=26(√)   /     q++(×)

    const int *q=&i----------->i=26(√)  /  q=&j(√)   /   *q=26(×)

*给指针变量更换变量地址,不用带’*‘,    eg.  p=&j

2024.9.15

*指针运算:  p+1---->p的数值加上了一个sizeof(变量类型)

*对指针做减法:p-q输出的结果是在运算结果上除以sizeof(变量类型)

*

efc8bb1920004669a12da4bfd7abde4c.png

2024.9.16

cbc7dafdba7248dd889dc476cbff9911.png

*char *s  <=>const char *s   (指针s指向的是内存中的只读区域),想要修改,以char s[]方式声明

*字符串输入是%ns 表示只读取前n位

*char *s,s在输入时不会读入空格

2024.9.17

*字符串 <string.h>

*字符串长度 -->strlen(不包括结尾0)

*字符串比较--->strcmp(相等返回0,大于返回1,小于返回-1)-----//比较ASCII码值

*strcpy ----->(a,b) 把b复制给a,要求ab不重叠????

*字符数组初始化 char a[]="\0";

*gets()可直接输入带空格的字符串,性能优于scanf

*函数返回用于返回状态,指针返回用于传值

*声明指针变量一定要指明地址,不允许无地址使用

2024.9.25

*动态内存试验代码

#include <stdio.h>
#include <stdlib.h>
int main(){
	int num;
	int *a;
	scanf("%d ",&num);
	a=(int *)malloc(num*sizeof(int));
	for(int i=0;i<num;i++){
		scanf("%d",&a[i]);
	}
	for(int i=0;i<num;i++){
		printf("%d",a[i]);
	}
    free(a);
	return 0;
} 

*malloc 申请内存失败会返回null或0

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐