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

网上的彩票网站是怎么做的中国做民宿的网站

网上的彩票网站是怎么做的,中国做民宿的网站,综合网站开发,国外js建设网站✨博客主页#xff1a;小钱编程成长记 #x1f388;博客专栏#xff1a;进阶C语言 #x1f388;推荐相关博文#xff1a;进阶C语言#xff08;一#xff09;、进阶C语言#xff08;二#xff09;、进阶C语言#xff08;三#xff09; 进阶指针#xff08;四#x… ✨博客主页小钱编程成长记 博客专栏进阶C语言 推荐相关博文进阶C语言一、进阶C语言二、进阶C语言三 进阶指针四 1.一维数组1.1 理解sizeof()里一维数组数组名的意义 2.字符数组2.1 理解sizeof()里 char arr[] {a,b,c,d,e,f};的数组名的意义2.2 理解strlen()里 char arr[] {a,b,c,d,e,f};的数组名的意义2.3 理解sizeof()里 char arr[] abcdef; 的数组名的意义2.4 理解strlen()里 char arr[] abcdef; 的数组名的意义 3.理解字符串指针3.1 理解sizeof()里字符串指针p的意义3.2 理解strlen()里字符串指针p的意义 4.二维数组4.1 理解sizeof()里数组名的意义 知识总结结语 我们通过对指针和数组笔试题的分析来增强对指针数组名sizeof和strlen的理解。 1.一维数组 1.1 理解sizeof()里一维数组数组名的意义 int a[] {1,2,3,4};//四个元素每个元素都是int类型的4字节共16字节。小知识 数组名的理解数组名是数组首元素地址。 但有两个例外 1.sizeof(数组名)。sizeof是操作符 2.数组名 sizeof的返回值是size_t类型的要用%zd去打印 printf(“%zd\n”, sizeof(a)); // 16 数组名单独放在sizeof内部数组名表示整个数组计算的是整个数组的大小单位是字节。printf(“%zd\n”, sizeof(a0); // 4/8 a并非单独放在sizeof内部也没有所以a就是首元素地址。printf(“%zd\n”, sizeof(*a)); // 4 非单独解引用首元素地址a得第一个元素。 *a a[0] * (a0)printf(“%zd\n”, sizeof(a1)); // 4 非单独求的是第一个元素的地址。 *a a [0] * (a0)printf(“%zd\n”, sizeof(a[1])); // 4 非单独求的是第二个元素下标为1的元素的大小。printf(“%zd\n”, sizeof(a)); // 4/8 数组名求的是整个数组的地址的大小。整个数组的地址也是地址。 小知识 数组的地址和数组首元素的地址的本质区别是类型而非大小。 》如图 printf(“%zd\n”, sizeof( * a)); // 16 小知识 第一种理解方式 对int类型的元素的地址* 访问的大小是int的大小。 对整个数组的地址 *访问的空间是整个数组的大小单位是字节。 第二种理解方式 *a a 既取地址又解引用两种操作符的效果相抵消了。 printf(“%zd\n”, sizeof(a1)); // 4/8 a是数组指针类型的1跳过数组的大小但仍然是地址。 printf(“%zd\n”, sizeof(a[0])); // 4/8 求的是第一个下标为0的元素的地址的大小。 printf(“%zd\n”, sizeof(a[0]1)); // 4/8 a[0]是第一个元素的地址1跳过一个元素指针指向第二个元素求的是第二个元素的地址的大小。 a[1] a[0]1 a1 2.字符数组 2.1 理解sizeof()里 char arr[] {‘a’,‘b’,‘c’,‘d’,‘e’,‘f’};的数组名的意义 和上一组差不多 char arr[] {a, b, c, d, e, f};//共6个字节printf(“%zd\n”, sizeof(arr)); // 6 单独放数组名表示的是整个数组。printf(“%zd\n”, sizeof(arr0)); // 4/8 非单独数组名表示的是首元素地址。printf(“%zd\n”, sizeof(*arr)); // 4/8 非单独printf(“%zd\n”, sizeof(arr[1])); // 1 求的是下标为1的元素的大小。printf(%zd\n , sizeof(arr)); // 4/8 数组的地址也是地址。printf(“%zd\n”, sizeof(arr1)); // 4/8 跳过一个数组大小之后的地址。printf(%zd\n , sizeof(arr[0]1)); // 4/8 arr[0]是第一个元素的地址1得到第二个元素的地址。 2.2 理解strlen()里 char arr[] {‘a’,‘b’,‘c’,‘d’,‘e’,‘f’};的数组名的意义 char arr[] {a,b,c,d,e,f};//共6字节小知识 strlen是库函数需要头文件string.h。strlen的参数是指针返回类型是size_t无符号整型用%zd打印。strlen返回的是 从 给出的指针指向的字符 到 \0之间的字符的个数不包含\0)。 printf(“%zd\n”, strlen(arr)); // 随机值 这里的arr不属于那两个例外所以是数组首元素地址打印出来的是首元素地址指向的字符 到 \0之间的字符的个数不包含\0)。又因为字符数组中没有\0也不知道在内存中字符数组后面什么时候才能遇到\0。所以打印出来的是随机值。 printf(“%zd\n”, strlen(arr0); // 随机值 arr0表示的也是首元素地址和上面情况一样。 printf(“%zd\n”, strlen(*arr)); // 报错 1、arr是首元素地址*arr是首元素’a’字符’a’在内存中存的是ASCII码97但strlen需要的参数是地址strlen会把97当作地址。 2、strlen要想找到 \0 结束统计就需要先从传给它的指针开始解引用找\0。 站在strlen的角度认为传参传进去的’a’-97就是地址97是一个未知地址是没有理由凭空出现的或对应的空间未提前开辟的地址若直接进行访问就是非法访问会报错。 printf(%zd\n , strlen(arr[1])); // 报错 和上一个情况一样都是将数组元素直接传给了strlen函数。 printf(%zd\n , strlen(arr)); // 随机值 strlen的参数和返回类型为 size_t strlen(const char * str) 如果传给strlen的指针的类型不是const char*则传入函数时会被强制转换成const char类型。 arr–char( * )[6]–const char 整个数组的地址和首元素的地址在数值上一样返回这个地址上的字符到\0之间的字符个数不包括\0因为数组上没有\0也不知道内存中数组后面什么地方有\0所以返回的是随机值。 printf(%zd\n , strlen(arr1)) ; // 随机值 从跳过一个数组大小之后的地址开始解引用找\0返回之间的字符个数不包括\0。 printf (%zd\n , strlen(arr[0]1)); // 随机值 返回的是第二个元素地址上的字符到\0之前出现的字符的个数。 2.3 理解sizeof()里 char arr[] “abcdef”; 的数组名的意义 char arr[] abcdef; //共7字节因为还有隐藏的\0pirntf(%zd\n , sizeof(arr)); // 7 数组名是单独放在sizeof()中的。 printf(%zd\n , sizeof(arr0)); // 4/8 非单独放数组名是首元素地址。 printf(%zd\n , sizeof(*arr)); // 1 非单独放*arr是首元素。 printf(%zd\n , sizeof(arr[1])); // 1 下标为1的元素的大小。 printf(%zd\n , sizeof(arr)); // 4/8 整个数组的地址也是地址是地址就是432位/864位字节 printf(%zd\n , sizeof(arr1)); // 4/8 计算的是跳过一个数组之后的地址的大小。 printf(%zd\n , sizeof(arr[0]1)); // 4/8 第二个元素的地址。 2.4 理解strlen()里 char arr[] “abcdef”; 的数组名的意义 char arr[] abcdef; //共7字节因为还有隐藏的\0printf(%zd\n , strlen(arr)); // 6 strlen()中数组名是首字符地址具体分析过程前面说过了。 printf(%zd\n , strlen(arr0)); // 6 返回arr上的字符到\0之间的字符的个数。字符串最后隐藏了一个\0。 printf(%zd\n , strlen(*arr)); // 非法访问报错 *arr是首元素。具体分析前面说过了。 printf(%zd\n , strlen(arr[1])); // 非法访问报错 arr[1]是第二个元素。具体分析前面说过了。 printf(%zd\n , strlen(arr)); // 6 数组地址在数值上首字符地址。 printf(%zd\n , strlen(arr1)); // 随机值 arr1是跳过一个数组之后的地址从这开始到\0之前有几个字符未知。 printf(%zd\n , strlen(arr[0]1)); // 5 arr[0]1是第二个元素的地址它对应的字符到\0之间有5个字符。 3.理解字符串指针 char *p abcdef;小知识 指针是用来存放地址的所以指针的大小就等于地址的大小。常量字符串作为表达式时的结果是首字符的地址所以p中存放的是’a’的地址但内存中肯定是存储着abcdef的。 3.1 理解sizeof()里字符串指针p的意义 char *p abcdef;printf(%zd\n , sizeof(p )); // 4/8 p是指针大小和地址的大小一样是 432位/ 864位。 printf(%zd\n , sizeof(p1)); // 4/8 指针p1还是地址。 printf(%zd\n , sizeof(*p)); // 1 p中存放的是首字符地址*p就是首字符大小为1。 printf(%zd\n , sizeof(p[0])); // 1 C语言规定p[0]*(p0)。 若将字符串想象成字符数组则p[0]就是首元素 / 首字符。 printf(%zd\n , sizeof(p)); // 4/8 指针变量的地址也是地址。 printf(%zd\n , sizeof(p1)); // 4/8 跳过p存放的p / 跳过一个p的类型的大小。 printf(%zd\n , sizeof(p[0]1)); // 1 p[0]是首字符*p[0]就是首字符地址1跳过一个字符的大小指向第二个元素。 3.2 理解strlen()里字符串指针p的意义 char *p abcdef;printf(%zd\n , strlen(p )); // 6 p是字符串的首字符地址。 printf(%zd\n , strlen(p1)); // 5 printf(%zd\n , strlen(*p)); // 非法访问报错 参数应该是指针但这里却传的是字符。具体错误原因分析前面已经讲过了。 printf(%zd\n , strlen(p[0])); // 非法访问报错 p[0] *(p0) 是首字符应该传指针。具体错误原因分析前面已经讲过了。 printf(%zd\n, strlen(p)); // 随机值 从p往后开始解引用因为p的类型的大小是4/8字节所以每次解引用访问4/8个字节找\0并返回之间的字符的个数。 printf(%zd\n , strlen(p1)); // 随机值 和上面一个类似。p1是p跳过一个p的类型的大小。 printf(%zd\n , strlen(p[0]1)); // 6 p[0] *(p0) p。p中存放的是首字符的地址返回p指向的字符与\0之间的字符的个数。 4.二维数组 4.1 理解sizeof()里数组名的意义 int a[3][4] {0};printf(%zd\n , sizeof(a)); // 48 数组名a单独放在了sizeof内部表示整个数组sizeof(a)计算的是数组的大小单位是字节。 printf(%zd\n , sizeof(a[0][0])); // 4 a[0][0]是二维数组的第一行第一个元素。 printf(%zd\n , sizeof(a[0])); // 16 小知识 a[0]是第一行这个一维数组的数组名数组名单独放在了sizeof()内部a[0]就表示整个第一行这个一维数组sizeof(a[0])计算的是整个第一行这个一维数组的大小单位为字节。 printf(%zd\n , sizeof(a[0]1)); // 4/8 a[0]并非单独放在sizeof()内部也没有所以a[0]表示首元素地址也就是第一行第一个元素的地址。 printf(%zd\n , sizeof(*(a[0]1))); // 4 a[0]是第一行数组的数组名未单独放在sizeof()里所以表示第一个数组的首元素地址。 printf(%zd\n , sizeof(a1)); // 4/8 a非单独放在sizeof()里也没有所以表示首元素地址也就是第一个一维数组的地址。a的类型是int(*)[4]1跳过一个数组的大小a1就是第二个数组的地址。 printf(%zd\n, sizeof(*(a1))); // 4/8 1、a是首元素地址就是第一个一维数组的地址类型是int( * )[4]。 1时跳过一个int( * ) 的大小。*解引用时访问一维数组的大小。 2、从另一个角度理解 *(a1) a[1]sizeof(a[1])—第二行的数组名单独放在了sizeof内部计算的是第二行的大小。 printf(%zd\n , sizeof(a[0]1)); // 4/8 a[0]是第一个数组的地址a[0] * (a0) a类型是int(*)[4]1跳过一个数组的大小a[0]1就是第二个数组的地址。 printf(%zd\n , sizeof(*(a[0]1))); // 16 由上一题知a[0]1是第二个一维数组的地址类型为int( * )[4]所以 * 解引用访问的空间大小是有4个元素的整型数组的大小sizeof计算的是第二个数组的大小。 printf(%zd\n , sizeof(*a)); // 16 a是二维数组数组名非单独放在sizeof()中所以表示第一个一维数组的地址。解引用后得到第一个一维数组。 printf(%zd\n , sizeof(a[3])); // 16不会产生越界访问 小知识 编译器用sizeof计算表达式的大小时是通过类型计算的大小并不会真的去访问表达式 / 获取表达式的值。a[3]在这里和a[0]的类型是一样的都是int( * )[4]所以产生的效果或者说大小是一样的。 比如int a 10; 计算a的大小时表面是sizeof(a)真正的应该是sizeof(int) 表达式有2个属性值属性类型属性。例如23 5 或int 5就是值属性结果int是类型属性结果。 知识总结 数组名的理解数组名是数组首元素地址。 但有两个例外 1.sizeof(数组名)。sizeof是操作符 2.数组名 sizeof的返回值是size_t类型的要用%zd去打印 数组的地址和数组首元素的地址的本质区别是类型而非大小。 对int类型的元素的地址 * 访问的大小是int的大小。 对整个数组的地址 *访问的空间是整个数组的大小单位是字节。 指针1跳过几个字节取决于指针指向的数据是什么类型的指向什么类型的数据1就跳过什么类型的大小。 *a a 既取地址又解引用两种操作符的效果相抵消了。 a[0] a[0]1 a0 传给strlen的地址一定要是程序已知的不是凭空出现的编译器提前开辟的空间的未被释放的空间的。 strlen是库函数需要头文件string.h。strlen的参数是指针返回类型是size_t无符号整型用%zd打印。strlen返回的是 从 给出的指针指向的字符 到 \0之间的字符的个数不包含\0)。 strlen的参数和返回类型为 size_t strlen(const char * str) 如果传给strlen的指针的类型不是const char*则传入函数时会被强制转换成const char类型。 arr–char( * )[6]–const char 整个数组的地址和首元素的地址在数值上一样。 编译器用sizeof计算表达式的大小时是通过类型计算的大小并不会真的去访问表达式 / 获取表达式的值。a[3]在这里和a[0]的类型是一样的都是int( * )[4]所以产生的效果或者说大小是一样的。 比如int a 10; 计算a的大小时表面是sizeof(a)真正的应该是sizeof(int) 表达式有2个属性值属性类型属性。例如23 5 或int 5就是值属性结果int是类型属性结果。 结语 本篇文章通过对题目的讲解加强了对指针数组名sizeofstrlen的理解。 最后感谢大家的阅读大家一起进步 点赞收藏加关注C语言学习不迷路
http://wiki.neutronadmin.com/news/233763/

相关文章:

  • 做网站全自动cpa引流怎么做推广和宣传
  • 外贸类网站建设软文公司代写
  • 网站运营案例商场建设相关网站
  • 重庆建新建设工程有限公司网站做lgoo的网站一般有哪些
  • 郑州轨道网站开发网站备案需要准备什么材料
  • 贵阳市城乡建设部网站在线图片修改
  • 安阳市建设工程领域网站seo优化技术厂家
  • 做房产网站接不到电话wordpress在线解析
  • 自学网站开发多久建立个人网站
  • 建设图书馆网站建设网站赚钱猛兽领主
  • 做网站的是如何赚钱的做网站付款会有凭证吗
  • 如何做购物网站的后台金华建设网站的公司
  • 青岛建网站类似58同城网站建设多少钱
  • 做毕设最常去的几个网站南京网站托管网络营销外包
  • 高端网站建设的方案网站后期推广是谁来做
  • 那个网站有帮人做图的邯郸市公司
  • 潍坊网站空间虚拟资源下载源码wordpress
  • 浙江省建设培训中心网站首页seo外贸网站
  • 苏州互联网企业如何做网站优化的内容
  • 软件技术专业就业前景s网站优化
  • 网站gzip压缩网站建设维护报价
  • 麻涌镇网站仿做logo设计大师
  • 西安高校网站建设长春火车站现在正常通车吗
  • 龙岩网站设计制作动易网站管理系统下载
  • 免费网络推广网站大全成都网站建设成都
  • 西安企业门户网站建设python php网站开发
  • 做简历的什么客网站wordpress阅读次数自动增长
  • 动漫网站建设毕业设计怎样做广告设计
  • 东阳网站推广小米3g 架设wordpress
  • 容桂顺德网站建设怎么封锁网站