博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日一练(三十)
阅读量:3953 次
发布时间:2019-05-24

本文共 1764 字,大约阅读时间需要 5 分钟。

文章目录

1.21 字符串数组问题

分析下列输出:

char a[] = {
'a', 'b', 'c'};cout << strlen(a) << endl;

返回的结果不可预料,因为a初始化的时候,结尾没有主动加上‘\0’结束符。而标准库字符串处理函数的时候是以结束符\0为结束的。

同理,如下的程序输出:

char a[] = {
'a', 'b', '\0', 'c', 'd', '\0'};printf("%s", a);

输出的就是:ab了,因为字符串处理以‘\0’为终止。

1.22 二维数组注意事项

本质上讲,所有数组在内存中都是一维线性的,只不过不同的语言可能存储方式不同,有行优先存储和列存储。

以下声明是否正确:

int fun(int a[][]);

看起来没什么问题,问题就出在二维数组的声明上,二维数组的声明初始化不能省略列数!!!

还有一些细节!!!!

int a[3][2] = {
(0, 1), (2, 3), (4, 5)};int *p = a[0];cout << p[0] << endl;

答案输出:1

猛的一看,认为p[0]=0。

实际上,这里的(0, 1)是逗号运算符,所以int a[3][2] = {1, 3, 5},p指针指向二维数组的首地址,p[0]

相当于*(p+0),即a数组的第一个元素。

还有要注意二维数组的某一元素的随机读取:

在这里插入图片描述

1.23 二维数组的动态声明

在这里插入图片描述

注意,当动态声明数组的时候,数组相当于一个链表,因为数组的a[k]都是一个int*,所以动态申请的二维数组的元素不是连续的,所以我才说相当于一个链表。

1.24 宏定义中 do{ }while(0)

在宏定义中,经常会看到do{ } while (0)定义的形式,比如:

#define __set_task_state(tsk, state_value)      \    do { (tsk)->state = (state_value); } while (0)

看起来多此一举,可实际上采用do{}while(0)的形式保证了宏定义不会受到大括号、分号的影响,使宏定义总是按照你期望的方式运行

其中,do{}保证了裸机能够被看作一个整体执行,while(0)保证了只执行一次。

参考:https://www.cnblogs.com/lanxuezaipiao/p/3535626.html

1.25 find 命令

详解:http://c.biancheng.net/view/779.html

find用来搜索文件,可以按照:权限、文件名、文件大小、文件时间、inode号、所有者等来搜索文件。

但是find是直接在硬盘中进行搜索的,如果指定范围过大,就会消耗较大的系统资源可能导致服务器压力过大。

命令格式:

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

find有两个参数:

  • 第一个参数指定搜索路径
  • 第二个参数指定搜索内容

选项如下:

  • -name: 按照文件名搜索;
  • -iname: 按照文件名搜索,不区分文件名大小;
  • -inum: 按照 inode 号搜索;
  • -size[±]大小:按照指定大小搜索文件;
  • -atime [±]时间: 按照文件访问时间搜索;
  • -mtime [±]时间: 按照文改时间搜索;
  • -ctime [±]时间: 按照文件修改时间搜索;
  • -perm 权限模式:査找文件权限刚好等于"权限模式"的文件;
  • -perm -权限模式:査找文件权限全部包含"权限模式"的文件;
  • -perm +权限模式:査找文件权限包含"权限模式"的任意一个权限的文件;
  • -uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件;
  • -gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件;
  • -user 用户名:按照用户名査找所有者是指定用户的文件;
  • -group 组名:按照组名査找所属组是指定用户组的文件;
  • -nouser:査找没有所有者的文件;
  • -type d:查找目录;
  • -type f:查找普通文件;
  • -type l:查找软链接文件;
  • -a:and逻辑与;
  • -o:or逻辑或;
  • -not:not逻辑非;
你可能感兴趣的文章
报错java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method ....
查看>>
解决:SpringBoot项目访问任意接口都跳转到login登录页面
查看>>
[SSL]——如何使用SpringBoot内置的tomcat配置SSL——>从而实现HTTPS访问(基于阿里云云服务器)
查看>>
使用Xshell重置Linux服务器中mysql数据库的密码
查看>>
SpringBoot + SpringSecurity解决POST DELETE方式下的被拒绝访问 报错403的问题 (关闭CSRF)
查看>>
微信小程序——解决微信小程序B接口生成小程序码中scene参数的存放和获取问题
查看>>
Springboot2中内置tomcat解决请求头过长异常 java.lang.IllegalArgumentException: Request header is too large
查看>>
Javase->Javaee->Javaweb联系与区别
查看>>
c语言中关于int *p = &a 的解读
查看>>
解决Springboot2中无法访问在static/image/中的静态图片!终于解决啦
查看>>
IDEA搭建Springboot+SpringMVC+Mybatis+Mysql(详细、易懂)
查看>>
牛客网华为机试——合并表记录
查看>>
算数基本定理
查看>>
Sliding Window(POJ-2823)
查看>>
A. Greed CodeForces - 892A
查看>>
最短路 HDU - 2544
查看>>
7-12 列车厢调度(25 分)
查看>>
7-5 表达式转换(25 分)
查看>>
一个人的旅行 HDU - 2066
查看>>
浪里个浪 FZU - 2261 (多源最短路问题)
查看>>