笔记
心向光明呀
不进则退
展开
-
day 15二级指针和二维数组 7_29
二级指针int a3,a2,a1,a0;int *p3,*p2,*p1,*p0;int **s;s+1 => s=&p1 类型 int ** s+1=s+sizeof(int *) //+1 是 +4字节*s+1 => *s =*&p0=p0 *s+1=p0+1 p0+1=a1 p0=&a1;p0+1 => p0+sizeof(int)//+1 是 +4 字节**s+1 **s=**&p0=*p0=a0 **s+1 =&g原创 2021-08-03 16:37:44 · 67 阅读 · 0 评论 -
Move_Ar 7_29
逆置数组实现数组的MoveO(n) 移动数组元素 左移k位 右移10-k位void Print_Ar(int *ar,int n) { assert(ar != nullptr); int i = 0; while (i < n) { printf("%d ", ar[i]); i++; }}void Swap_Ar(int* ap, int* bp) { assert(ap!=nullptr&&bp!=nullptr); int tmp = *原创 2021-08-02 18:08:05 · 79 阅读 · 0 评论 -
day 14 7_27 string
int main(){ char stra[] = "lijiale";//字符串自带'\0' char strb[] = { 'l','i','j','i','a','l','e' }; //字符数组中无'\0' int lena = sizeof(stra);//空间大小 计算'\0' lena=8 int lenb = sizeof(strb);//空间大小 strb字符数组中无'\0',lena=7 lena = strlen(stra);//计算字符串长度 遇到'\0'结束 7原创 2021-08-02 12:55:10 · 52 阅读 · 0 评论 -
day 13 7_25 指针
* 与 &int a=10;int *pa=&a;*&a => *(&a) => a *与&优先级相同 从右向左结合*&ap => *(&ap) =>ap &*ap => &(*ap) =>&a =>ap // *ap是所指之物 (&*ap)是所指之物的地址 // ap存放所指之物的地址 所以(&*ap)=ap数组首元素地址和数组地址int原创 2021-07-26 11:54:40 · 64 阅读 · 0 评论 -
day 12 7_23指针
int main() { int a = 10; const int b = 10;//必须用常性指针 指向b int* pa = &a;// const int* pa1 = &a;//可以用常性指针 const int* pb = &b; //int *pb=&b *pb=100 error 常变量必须用常性指 针来指向自己 return 0;}...原创 2021-07-25 18:38:17 · 72 阅读 · 0 评论 -
day 11 7_22 指针与数组
*(解引用) ++ 优先级相同int main() { int ar[5] = { 12,23,34,45,56 }; int* p = ar; int x = 0; int y = 0; x = *p++;// => x=*p p++ x=12 y = *p;//此时指向ar[1] *p=23 printf("%d %d\n", x, y); x = ++ * p;//=> *p=*p+1 *p=24 x=*p 修改了ar[1]=24 y = *p;//*p=2原创 2021-07-24 16:04:25 · 63 阅读 · 0 评论 -
day 10 7_20
访问数组元素有两种方法数组下标访问 也会退化为指针指针访问int ar[5]={12,23,34,45,56};ar[i] *(ar+i)int *p=ar;p[i] *(p+i) i[p] =>退化为指针 *(i+p);为什么会退化为指针?在函数传参过程中传递数组名,函数用数组来接受,也会退化为用指针接收,这样就会只接收数组首元素地址省空间省时间(避免了每次需要传递数组所有元素的缺点)...原创 2021-07-24 10:32:51 · 58 阅读 · 0 评论 -
day 9 7_17 数组
#include<stdio.h>#include<stdlib.h>int main(){const int n=10;int a[n]={};//在编译环节 把n替换为10 即(a[10])for(int i=0;i<n;i++){a[i]=rand()%10+1;}return 0;}数组和变量 加了 const 之后必须初始化错误示范:const int m;//错误 初始化必须赋值const int a[5];//错误 初始化必须赋值正原创 2021-07-20 19:12:24 · 70 阅读 · 0 评论 -
day 6
staticstatic修饰局部变量 修饰的局部变量只执行一次(只创建一次变量) .改变局部变量的生存期(延长变量的生命周期 直到程序运行结束以后才释放).定义的变量在数据区分配内存.如果没有初始化,默认为0.只改变生存期,不改变可见性.#include<stdio.h>void fun(int x) { static int a = x;//只初始化一次 //第一次a=10 //第二次a=12原创 2021-07-19 20:30:22 · 74 阅读 · 0 评论 -
day 5
constconst 在.cpp下也是一种替换 是在程序的编译阶段进行替换.宏是在预编译阶段进行替换.用const修饰的变量必须初始化值.#include<stdio.h>#include<stdlib.h>int main() { const int a = 10;//编译阶段直接替换 int b = 0; int* p = (int *)&a; *p = 100; b = a;//遇见a直接替换 为10 printf("a=%d ", a);//直原创 2021-07-19 14:10:26 · 64 阅读 · 0 评论 -
day 8 7_16循环
跳转语句break,continue,goto,returnbreak:只能跳出一层循环continue与break的区别在于 continue语句结束的只是本次循环,而break结束的是整个循环.在for循环中continue会跳转到 for循环中的第三个表达式 ++i位置在while循环中 continue会跳转到while循环的判断语句中去(可能会造成死循环)上图当 i=2 continue 语句跳转到 i<n 然后接着执行循环体 判断i%2==0 结果为真 然后继续跳转到 i&原创 2021-07-17 13:12:19 · 92 阅读 · 0 评论 -
day 7 7_15 逗号表达式的使用 函数返回值的去处
比较三个值的最大值 使用三目运算符比较三个值的最大值 使用三目运算符int Max_Three(int a,int b,int c) { int max = a > b ? a : b;//先找出a和b之间大的一个 return max > c ? max : c;//在用a和b之间最大的和c作比较 求出最大值 然后返回}int main() { int a = 0, b = 0, c = 0; scanf_s("%d,%d,%d", &a, &b, &原创 2021-07-16 22:24:45 · 204 阅读 · 0 评论 -
习题 day7 上机
给一个正整数要求1.求出它是几位数.2.分别输出每一位数字.3.按逆序输出各位数字,例如原数为321,应输出123.1.求出它是几位数.313313/10 3131/10 33/10 00每次除10就会扔掉最低位 定义一个计数变量 扔掉以为就+1当n=0 此时就可以结束 int Get_Figure(int n) {//计算数字的位数 int figure = 0; while (n>0) { n /= 10; figure++; } retur原创 2021-07-15 12:10:44 · 55 阅读 · 0 评论 -
day 4
优先级问题 *= 和 +#include<stdio.h>int main() { int a = 2; int b = 4; int c = 6; a *= b + c; //a=a*(b+c) 20 //a=a*b+c 14 printf("a=%d\n", a); return 0;}输出: a=20*=优先级低于+所以a*=b+c即就是a=a*(b+c)原创 2021-07-13 21:04:27 · 59 阅读 · 0 评论 -
day 3
可见性(作用域)和生存期**作用域(标识符)**指标识符能够被使用的范围;只有在作用域内标识符才可以被使用.此阶段针对编译和链接过程(1)函数中定义的标识符,包括形参和函数体中定义的局部变量,作用域都在该函数内,也称作函数域.(2)文件作用域也称全局作用域.定义在所有函数之外的标识符,具有文件作用域,作用域为从定义处到整个源文件结束(向下可见,向上不可见).文件中定义的全局变量和函数都具有文件作用域.生存期也叫生命期(Life time).此阶段针对的是程序的执行过程生命期指的是标识符从程序开始原创 2021-07-12 23:04:11 · 48 阅读 · 0 评论 -
day 2
#define定义的宏常量宏常量并不开辟空间,无类型,只是一种字符串可以是(常数、表达式、格式串).一般形式为:#define 标识符 字符串.只在预编译环节起作用,在函数中看到标识符后直接替换.在宏的后面不能有分号,否则在遇到标识符会把分号连带着与标识符替换.用const关键字修饰的变量,称为常变量.const int a=100; //用const 修饰后变量不能修改 只能读取枚举常量枚举常量是受到限制的整型量.#include<stdio.h>enum week {原创 2021-07-12 18:30:34 · 54 阅读 · 0 评论 -
day 1
一个源程序可以由一个或者多个源文件组成.一个源文件由一个或者多个函数组成.一个源程序无论由多少个文件组成,都有一个且只能有一个main函数,即主函数C语言基本数据类型整型整型: int 4byte;短整型: short 2byte;字符型: char 1byte;长整型: long int 4byte;长整型: long long 8byte浮点型单精度: float 4原创 2021-07-11 16:14:31 · 74 阅读 · 0 评论