当前位置: 首页 > news >正文

宝安网站 建设seo信科免费服务器试用

宝安网站 建设seo信科,免费服务器试用,网站首页 排版,什么网站可以做ui兼职文章目录循环控制switch-case-break-defaultdo-while-forgetchar()break-continuegotovoidvoid*returnconstconst修饰变量const修饰数组const修饰指针指针补充const 修饰返回值volatilestruct柔型数组union联合体联合体空间开辟问题利用联合体的性质,判断机器是大端还是小端enu… 文章目录循环控制switch-case-break-defaultdo-while-forgetchar()break-continuegotovoidvoid*returnconstconst修饰变量const修饰数组const修饰指针指针补充const 修饰返回值volatilestruct柔型数组union联合体联合体空间开辟问题利用联合体的性质,判断机器是大端还是小端enum枚举typedeftypedef vs #definetypedef static int int32_t 行不行循环控制 switch-case-break-default int main() {int day 0;scanf(%d,day);switch (day)//整形(int char short)||整形表达式{case 1: //case是用来进行判定的printf(星期一\n);break; //充当分支的作用,否则会将后面的都打印default:printf(不是星期一\n);break;}return 0; }当一个case分支时要执行多条语句或者定义变量时最好加上代码块{}或者将众多代码封装为一个函数就行.当多条分支执行一条语句时,将break删除组合落为一个就行. int main() {int day 0;scanf(%d,day);switch (day)//整形(int char short)||整形表达式{case 1: case 2:case 3://case是用来进行判定的printf(要上课\n);break; //充当分支的作用,否则会将后面的都打印default:printf(输入内容有误\n);break;}return 0; }default分支可以放在任何位置,只是为了好看并且符合语义放在最后. break不要写成return,可以写但是不方便别人维护的时候好看,可以在循环的时候设置一个bool类型的标记位. switch-case中绝对不能用const修饰组成的只读常量,必须是真正的常量. int main() {const int day 0;scanf(%d,day);switch (day)//整形(int char short)||整形表达式{case day:break;//编译报错case 1: case 2:case 3://case是用来进行判定的printf(要上课\n);break; //充当分支的作用,否则会将后面的都打印default:printf(输入内容有误\n);break;}return 0; }do-while-for 循环条件初始化,循环判定,循环条件更新. 任何C程序,在默认编译好之后,运行时都会默认打开三个输入输出流. perror(hello world\n); getchar() 键盘中输入时,多读了一个\n 为什么返回值是int类型,不是char类型 字符char类型是8字节,[0,255],ASCII码表中都是合理的值,如果也设置是返回值是char.返回成功时是一个有效字符,如果获取失败,8个bit位只能表示所有的合法字符,但是无法表示返回失败的概念.说白了,char类型的返回值无法表示失败,太小了. 键盘中输入的所有的内容或者输出的字符,或者往显示器中打印的,都是字符! printf的返回值就是表示一共打印了多少个字符. int a0; scanf(%d,a);说白了就是将键盘中的字符按照类型格式化输入到变量a中.所以会将键盘显示器啥的都叫字符设备. break-continue break对比continue continue:在while()和do while()都是跳转到条件判断处,for()循环是跳转到条件更新处. goto 直接跳转到标签指定处,可以向上或者向下跳转. goto 语句实现循环 int main() {int i 0; start:printf([%d] goto running ...\n, i);i;if (i 10){goto start;}printf(goto end...\n);return 0; }goto语句只能在本函数块中使用,不能跨函数或者跨文件使用. void void不能定义变量. void本身就被编译器定义为空类型,强制的不允许定义变量. void大小是0不能开辟空间导致的,本身是空类型,理论上是不应该开空间的.即使开空间也仅仅是一个占位符. 注意:不同的编译器对于void大小的规定也是不一样的. C语言函数可以不带返回值.默认的返回值就是int.避免别人误解,所以使用void告诉别人,我不想返回.只是起到一个占位符的作用,这个返回值无法接收. 告知编译器,这个函数不需要传参. void* void* 可以定义变量只要是指针大小类型就是确定的. void*可以被任何类型的指针接收.void*可以接收任意指针类型. 库,系统接口的设计上,尽量设计为通用接口.例子中,既可以是int类型也可以是double类型. vs中void* 指针变量不能±-,无法确定向前移动几个字节.而在Linux中是可以编译通过的,因为Linux中有确定的sizof(void)1字节大小.因为不同的平台看待void空间大小是不确定的. 不能对void* 类型指针进行解引用. return 字符串类型 vs 字符串 C语言没有字符串类型,存在字符串,以\0结尾,不是数据长度,但是占据一字节的容量大小,字符串本身是没有名字的.使用字符数组访问. 计算机中删除数据释放空间是否是将数据全部清空? 计算机中删除数据本质只需要设置该数据无效即可(文件系统部分理解).所以下载数据很慢但是删除很快. 调用函数,形成栈帧,函数返回,栈帧空间释放.函数栈帧中的数据并不会被释放,仅仅代表这个空间是可以被覆盖的.printf()也是函数,所以使用printf的时候会形成新的函数栈帧,覆盖之前show()函数栈帧的部分. 开辟栈帧时,如何确定开辟多大的空间呢? 在调用函数之前,编译器可以通过定义变量的数量和类型,是可以预估这个函数应该是多少的空间的.不同的编译器预估的方式也是不同的. 递归的情况会不断创建栈帧空间,会存在栈溢出的情况. 为什么临时变量具有临时性? 函数中的变量基本都是临时变量在一个函数栈帧中,函数返回栈帧空间被释放.所有的临时变量都是依托于函数栈帧开辟空间的. int GetData() {int x 0x11223344;printf(get data success!\n);return x; } int main() {int ret GetData();printf(ret: %x\n,ret);return 0; }GetData()函数中的变量x在函数返回时已经被销毁,是如何交给ret的呢? 函数的返回值,通过寄存器eax的方式返回给函数调用方. 有ret进行接收,就将eax中内容交给ret 没有ret接收,仍然放到eax中,但是函数并不会做任何处理.main函数的返回值是给谁的呢?为什么经常是0?(进程部分讲解) const const修饰变量 为变量添加只读属性,const修饰的变量是不可直接被修改(二次赋值).通过指针就可以间接修改. const修饰变量的意义?是在编译期间的处理 让编译器进行直接修改式检查.告诉其他人不可修改.(是一种软性要求,不是强制性约束) 真正意义上的不可被修改,操作系统层面的处理. 数组开辟的空间大小必须是真常量.const修饰的变量vs中是编不过的.在Linux中是可以编过的,不同的平台支持的c的版本是不同的.const只能在初始化的时候赋值,二次赋值时不允许的. const修饰数组 数组中的元素都是不可被修改的.const int arr[] {1,2,3,4,5}; const修饰指针 地址就是指针,提高CPU内存寻址的效率. 地址是数据吗?是 数据可以被保存吗?4字节空间存储,这个内存空间就叫做指针变量. 任何一个变量名在不同的应用场景中代表不同的含义. int a10; int* pa; pb;//p的空间,变量的属性,左值 qp; //p中的内容,数据的属性,右值指针补充 整形变量为例,对应他的指针变量中存储的是变量4字节中的最低的那个地址空间. *解引用 类型相同的时候,对指针解引用,指针所指向的目标. int main() {int a 10;const int *p1 a;//p指向的变量不可以直接修改p1 200;*p1 100;//errorint const *p2 a;//p指向的变量不可以直接修改//const修饰的是指针变量p中地址内容不可直接被改变int* const p3 a;*p3 1200;int b 20;p3 b;//error//const修饰的是指针变量p中地址内容不可直接被改变const int* const p4 a;*p4 200;//errorp4 b;//errorreturn 0; }函数传参需要产生临时变量吗? C中,任何函数参数都一定要产生临时变量,包括指针变量. const 修饰返回值 如果不想用函数返回值修改函数中变量的值时,可以选择使用const修饰返回值. const int* GetVal() {static int a 10;return a; } int main() {const int* p GetVal();//外部接收使用const修饰*p 100;//error }volatile 内存被覆盖的情况 不让CPU进行优化,每次都去访问内存,而不是优化被放进寄存器中数据的值,一直访问寄存器中的数据. #include stdio.h int pass 1; //volatile int pass 1; int main() {while(pass){}return 0; }不加volatile 加上volatile const volatile int a 10; 在vs2013和gcc 4.8中都能编译通过 const是在编译期间起效果 volatile在编译期间主要影响编译器形成不优化的代码进而影响运行故编译和运行都起效果。 const要求你不要进行写入就可以。volatile意思是你读取的时候每次都要从内存读。 两者并不冲突。 虽然volatile就叫做易变关键字但这里仅仅是描述它修饰的变量可能会变化要编译器注意并不是它要求对应变量必须变化这点要特别注意 struct #define NUM 64 struct stu {char name[NUM / 2];int age;char sex;char addr[NUM]; }a,c,b;//struct类型就是类型,和int啥的定义变量是相同的 int main() {struct stu x;strcpy(x.name,张三);//x.name 张三;//error 支持整体初始化,不支持整体赋值x.age 18;struct stu* p x;printf(sut.name:%s\n,p-name);printf(sut.name:%s\n,(*p).name);//为什么结构体访问会存在两种形式?//结构体可能贯穿多个函数,这时候传指针就很节省空间并且效率高//在日常访问的时候使用.更方便 }vs中结构体必须有一个成员,不支持空结构体.Linux中gcc可以定义,大小是0 柔型数组 必须放在结构体内. 首元素最好不是柔性数组,建议使用时前面最好还有一个有效的成员. 柔性数组是不占用结构体空间的.所以想要动态开辟结构体大小的空间时,需要根据设定大小和类型自定义开辟. struct data { int num;int arr[]; }; int main() {struct data d;struct data* p malloc(sizeof(struct data)sizeof(int)*10);p-num 10;for (int i 0; i p-num; i){p-arr[i] i;}free(p); }union联合体 union un {int a;char b; }; int main() {union un u;u.a 10;union un* p_un u;p_un-a 20;printf(%d\n,sizeof(union un));//4return 0; }联合体空间开辟问题 联合体的地址和联合体中最大元素的地址是相同的 联合体中最小元素b的地址也是联合体起始地址,也就是最低地址. 所以,联合体中的所有变量的起始地址在数字上都是相同的,取最大变量的大小开辟空间,所有变量以放射状的方式从低地址向高地址开辟空间. 开辟的空间是属于大家的,每个变量都认为自己独占所有空间,每一个元素都是第一个元素. 利用联合体的性质,判断机器是大端还是小端 int main() {union un u;u.a 1;if (u.b 1){printf(小端机器);}else{printf(大端机器);} }enum枚举 存储常量.制作整合一些具有强相关性的常量.使用英文单词相对于数字,具有自描述性. enum en {RED,BLACK,BLUE,GREEN }; int main() {int a BLUE;//如果直接用数字初始化a,需要添加注释别人才能看懂printf(%d\n,a);//2enum en c BLUE;printf(%d\n,RED);//0printf(%d\n,BLACK);//1 }typedef 类型重命名 typedef unsigned int u_int; struct data { int num;int arr[]; } a;//a 叫全局定义的一个变量 typedef struct Student {int num;char name[10];char sex; }Stu;//Stu 就是结构体类型typedef int a[10];//a是一个数组类型 int main() {u_int t -10;Stu s;a b;return 0; }typedef vs #define 类型重命名并不是简单的某种类型替换,应该理解为一个全新的类型,而不是替换之后*先和那个变量结合. typedef 之后不能再引入其他关键字来修饰类型 typedef static int int32_t 行不行 存储类型关键字5个 auto 声明自动变量一般不使用 extern 声明变量是在其他文件中声明 register 声明寄存器变量 static 声明静态变量 typedef 用以给数据类型取别名(但是该关键字被分到存储关键字分类中虽然看起来没什么相关性) 存储类型关键字不可以同时出现,在一个变量定义的时候只能有一个.报错:指定一个以上的存储类 其他关键字3个 const 声明只读变量 sizeof 计算数据类型长度 volatile 说明变量在程序执行中可被隐含地改变 控制语句关键字(12个) 1. 循环控制5个 for 一种循环语句 do 循环语句的循环体 while 循环语句的循环条件 break 跳出当前循环 continue 结束当前循环开始下一轮循环 2. 条件语句3个 if : 条件语句 else 条件语句否定分支 goto 无条件跳转语句 3. 开关语句 3个 switch :用于开关语句 case 开关语句分支 default 开关语句中的“其他”分支 4. 返回语句1个 return 函数返回语句(可以带参数也看不带参数)数据类型关键字(12个) char 声明字符型变量或函数 short 声明短整型变量或函数 int 声明整型变量或函数 long 声明长整型变量或函数 signed 声明有符号类型变量或函数 unsigned 声明无符号类型变量或函数 float 声明浮点型变量或函数 double 声明双精度变量或函数 struct 声明结构体变量或函数 union 声明共用体联合数据类型 enum 声明枚举类型 void 声明函数无返回值或无参数声明无类型指针
http://www.dnsts.com.cn/news/25448.html

相关文章:

  • 清河做网站成都互联网营销师培训
  • 分销商城网站建设外贸公司网络营销
  • 直播网站的建设管理外贸网站模板
  • 郑州网站开发培训备案 新增网站
  • 旅游地网站制作移动网络营销是什么
  • 系统与网站的区别简历免费模板
  • 访问公司网站公司会知道吗汕头市网站建设分站服务机构
  • 网站用模板为什么不利于seo推广高端网站建设教学
  • 做带字头像的网站基于ssh框架的网站开发流程
  • 外贸网站如何做外链wordpress知言主题
  • 网站代运营推广wordpress百度推送工具
  • 网站帮助wordpress随机图片
  • 阿里云服务器创建网站一个网站没有备案
  • 网站首页模板seo职业
  • 怎么做网站收广告费建设一个网站的文案需要
  • 筹备网站建设怎么看网站的建设时间
  • 深圳华强北现在能去吗seo在线优化网站
  • 中国自适应网站建设怎么查出这个网站是谁做的
  • 网站建设种类微信小程序开发教程官方文档
  • 沈阳网站建设哪里好建网站在哪里做广告
  • 河东区建设局网站漳州城乡住房建设部网站
  • 湛江高端网站建设广州网站建设品牌
  • 手机网站源代码wordpress 502错误
  • 怎么用动图做网站背景设计开发输入清单
  • 南京价格网站建设wordpress网页制作
  • 淘客手机网站模板青岛网站建设‘’
  • 学生个人网站设计wordpress 密码忘了
  • 江苏省城乡建设厅网站网站建设模板黄页
  • 解决做网站问题wordpress怎么启用经典编辑器
  • 政务网站设计方案塑模毕业设计代做网站