每日一练(十七)

11.16 Linux 数字权限使用

Linux中对文件的权限有严格的控制,想要对某个文件进行相关的操作时,要有相应的权限才可以。

一般权限包括:读r、写w、执行x

Linux权限的使用者分类有三种:

  • u:文件拥有用户
  • g:同一组的用户
  • o:其他组的用户

如果其他组的用户想要拥有对文件进行某一操作的权限,可以将该用户加入具备权限的组,所以一个用户可以同时归属多个组。一般使用chmod命令来对文件的权限进行修改设置。

权限可以用相应的数字来表示,数字4、2、1分别代表读、写、执行权限,所以对文件的权限描述可以通过4、2、1三个数字的相加来表示(三个数字的组合都是唯一的)7=4+2+1 6=4+2 5=4+1 3=2+1

而且一个文件的权限是针对三个

比如:

chmod 700 test.c   #-rwx------ u:读、写、执行  g:无权限  o: 无权限   
chmod 740 test.c   #-rwxr----- u:读、写、执行  g:只读  o: 无权限  
chmod 761 test.c   #-rwxrw---x u:读、写、执行  g:读、写  o: 只执行  

常见权限形式:

-rw------- (600)      #只有拥有者有读写权限。
-rw-r--r-- (644)      #只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700)      #只有拥有者有读、写、执行权限。
-rwxr-xr-x (755)      #拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711)      #拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666)      #所有用户都有文件读、写权限。
-rwxrwxrwx (777)      #所有用户都有读、写、执行权限。

11.17 二维数组的指针运算

int a [ 5 ] [ 4 ], ( * p)[4]=a;,数组a的首地址为100,* (p+2)+3等于 ( )

  • A 116
  • B 118
  • C 144
  • D 122

答案是:C

对于int a[5][4],a相当于一个二级指针,a是一个指针数组,数组中的每一个元素a[0] a[1] a[2]都是指针;a[0]是一个指向数组的指针,数组中有4个int数据。

对于int (*p)[4]=a,p是一个指针数组,数组中有4个int数据,即p和a在指向的对象上是一致的,然后p=a,a的首地址为100,代表b中存储的值就是100。

*(p + 2)相当于a[2],还是一个指针,相对于a来讲移动了8个int的内存地址,然后又*(p + 2) + 3,又相当于移动了3个int的内存地址,所以一共移动了11个int的内存地址,即44Byte,所以*(p + 2) + 3的值为144,本质上还是地址。

11.18 Make file 变量

makefile中变量分为三种:

  • 用户自定义变量
  • 预定义变量
  • 自动变量

自定义变量的定义和引用

变量是用来代替如下类型的文本字符串:

  • 系列文件的名字
  • 传递给编译器的参数
  • 需要一些的程序
  • 需要查找源代码的目录
  • 需要输出信息的其他目录
  • 其他事情

定义变量的方法为:

  • 递归展开:VAR=var
  • 简单扩展:VAR :=var

要注意的是:递归展开在展开的时候可以将内嵌的变量全部展开,但是如果在变量后面追加内容,可能在扩展的过程中导致无穷循环。所以一般情况下使用简单扩展比较好。

变量的使用:
于shell中一样,要引用变量的值,需要符号$,以$(VAR)的形式来引用变量,只有在变量定义的时候不需要$,引用变量相当于C语言中的宏定义。

若要表示$本身,则$$即可

例如:

OBJ = main.o hello.o bye.o
CC = gcc
CFLAGES = -Wall -O -g
create: $(OBJ)
        $(CC) $(CFLAGES) $(OBJ) -o a.out
main.o: main.c
        $(CC) $(CFLAGES) -c main.c -o main.o
hello.o: hello.c
        $(CC) $(CFLAGES) -c hello.c -o hello.o
bye.o: bye.c
        $(CC) $(CFLAGES) -c bye.c -o bye.o

clean:
        rm *.o

变量在定义的时候,直接=即可,变量在引用的时候必须加上$

可以通过+=运算为变量添加新的值

预定义变量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
身是一种在忍者世界中常见的特殊技能,也是《火影忍者》中的一个重要元素。每个人都可以通过影身术创造出许多个身,这些身可以同时进行各种活动。类比于影身术,CSDN每日一练就像是一个模拟的技能训练场。每天CSDN都会发布一道题目供广大程序员参与练习。 参与影身CSND每日一练的好处有许多。先,通过每日一练,程序员们可以不断提高自己的编程能力。就像影身可以通过快速反应和高效操作来增强自己的实力一样,参与每日一练可以锻炼程序员的编程思维和解决问题的能力。 其次,每日一练还可以丰富程序员的知识储备。每道题目都是经过精心挑选和设计的,涵盖了各种常见的编程知识点和技巧。通过解答这些问题,程序员们能够接触到各种新的问题和方法,扩展自己的知识领域。 另外,参与每日一练还可以增强程序员的交流与学习能力。在每道题目下方,CSDN提供了评论区供程序员们交流和讨论。程序员们可以在这里享自己的解题思路和方法,互相学习和进步。这不仅能够提高解题能力,还能够拓宽视野,了解不同的编程思维和技术。 综上所述,影身CSND每日一练就像是一个虚拟的技能训练场,可以帮助程序员们不断提升自己的编程能力,丰富知识储备,增强交流与学习能力。参与其中,每个程序员都能像影身一样变得更加强大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值