精华内容
下载资源
问答
  • C语言函数库查询系统(ACCESS)

    千次阅读 2019-07-04 10:51:42
    这个主要使用ACCESS来进行制作,可以将C语言的函数、全局变量、宏、联合、结构、枚举等类型的字符串分类储存起来,能使用窗体查询这里里面的函数或者宏,也可以用来查看某个函数属于哪个头文件,比如printf()函数: ...

    这个主要使用ACCESS来进行制作,可以将C语言的函数、全局变量、宏、联合、结构、枚举等类型的字符串分类储存起来,能使用窗体查询这里里面的函数或者宏,也可以用来查看某个函数属于哪个头文件,比如printf()函数:

    当然,要是人工一个一个的输函数,还不得累死,因此使用VBA制作了简单的程序,可以从语言的头文件或者源文件自动识别出函数、全局变量、结构、宏、联合、枚举等,然后添加到表中,不过技术能力有限,还有BUG,识别错误,或者报告文件导入失败其实已经成功是常有的事,目前只能作为一个辅助工具来使用。当程序写大了,或者在看不知名的代码,可以使用这个工具导入一下,就可以看到这个文件包含哪些东西。使用效果如图,这里面已经导入了几个C语言标准库的头文件:

     

     

    github地址:https://github.com/lindorx/Cfunlibsearch

    VB忘很久了,所以代码写的很乱,不算注释空行大概470多行,VBA的代码:

    Option Compare Database
    Public depth As Integer     '记录当前代码的嵌套深度
    Public ann As Boolean       '记录当前代码书否属于多行注释
    Public num As Integer       '记录a字符串数组的大小
    Public 所属文件 As String   '储存当前正在处理的文件名
    Public line As Long         '记录当前所在行
    Public sql As String        '储存要执行的DQL语句
    Public headfile As String   '储存当前文件引用到的头文件
    Public fnum As Long          '记录函数数量
    Public vnum As Long         '记录变量数量
    Public model As Integer       '记录当前模式,1:检索标准库,2:导入文件
    
    Private Sub Form_Load()
    Label0.Caption = "文件路径:"
    command0.Caption = "执行"
    model = 2
    加入.Visible = False
    End Sub
    
    Private Sub 检索标准库_Click()
    Label0.Caption = "输入查询的函数或宏:"
    command0.Caption = "查询"
    model = 1
    
    End Sub
    
    Private Sub 加入_Click()
        Text0.SetFocus  '将焦点移到文本框,就可以隐藏控件本身
        用户确认 = MsgBox("是否加入?", vbYesNo, "warring")
        If 用户确认 = vbNo Then GoTo 加入_End
        If standlib() Then
        MsgBox "导入完成"
        Else: MsgBox "导入失败"
        End If
    加入_End:
    加入.Visible = False
    End Sub
    Private Sub command0_Click()
    If model = 1 Then               '判断当前模式,1为查询标准库,2为导入文件
    Dim db
    Dim 标准库 As Recordset
    Dim 找到 As Boolean             '找到函数名或者宏名标志
    找到 = False
    Set db = CurrentDb              '令db指向当前的数据库
    Set 标准库 = db.OpenRecordset("select * from 标准库")   '通过SQL语句获得表
    '从text0读取要查询的函数名或宏名
    s = Text0.value
    If 标准库.EOF Then Exit Sub         '判断当前表是否为空
    标准库.MoveFirst                    '将表定位到第一行
    Do While Not 标准库.EOF            '遍历表,进行查询
        temp = 标准库.Fields("函数名")
        If IsNull(temp) Then GoTo l1       '判断该表项是否为空
        函数名 = CStr(temp)
        If 函数名 = s Then
            找到 = True
            Text1.value = 函数名
            Text2.value = CStr(标准库.Fields("函数参数"))
            Text5.value = CStr(标准库.Fields("文件名"))
            Text3.value = ""
            Text4.value = ""
        End If
    l1:
        标准库.MoveNext         '移动到下一行
    Loop
    If Not 找到 Then
     标准库.MoveFirst
        Do While Not 标准库.EOF
        On Error GoTo l2
        temp = 标准库.Fields("宏名")
        If IsNull(temp) Then GoTo l2
        宏名 = CStr(temp)
        If 宏名 = s Then
            找到 = True
            Text3.value = 宏名
            On Error GoTo nodef
            Text4.value = CStr(标准库.Fields("宏定义"))
            Text5.value = CStr(标准库.Fields("文件名"))
            Text1.value = ""
            Text2.value = ""
        End If
    l2:
        标准库.MoveNext
    Loop
    End If
    标准库.Close
    If Not 找到 Then
        Text1.value = ""
        Text2.value = ""
        Text3.value = ""
        Text5.value = ""
    nodef:
        Text4.value = ""
    End If
    Exit Sub
    ElseIf model = 2 Then
        Dim filename As String
        If IsNull(Text0.value) Then Exit Sub
        filename = Text0.value
        If filename <> "" And filename <> "输入要读取的文件路径" Then filectrl (filename)
        model = 2
    End If
    End Sub
    
    Private Sub Text0_GotFocus()
    Text0.Text = ""
    End Sub
    
    Private Sub Text0_LostFocus()
    If Text0.Text = "" And model <> 1 Then Text0.Text = "输入要读取的文件路径"
    End Sub
    
    Private Sub 读取文件_Click()
        Label0.Caption = "文件路径:"
        command0.Caption = "执行"
        model = 2
    End Sub
    
    Function filectrl(filename As String) As Boolean
    filectrl = False
        Dim buf As String       '储存截取出的字符串
       Dim strstart As Integer  '记录字符串的起始位置
       Dim strend As Integer    '记录字符串的结束位置
       Dim i As Integer         '遍历字符串
       Dim length As Integer    '记录字符串长度
       Dim ann As Boolean       '记录多行注释,当目前内容是注释时,设为真
       depth = 0
       ann = False
       line = 0
       is_struct_union_equm = False
       headfile = ""
       fnum = 0
       vnum = 0
       存在花括号 = False
       DoCmd.SetWarnings False      '关掉弹窗警告
        '提出文件名
        最后一个分割线位置 = InStrRev(filename, "\", Len(filename))
        所属文件 = Mid(filename, 最后一个分割线位置 + 1, Len(filename) - 最后一个分割线位置)
        On Error GoTo ferr  '如果读取错误,就跳转到ferr这里
        Open filename For Input As #1
        Do While Not EOF(1) '判断是否到达文件尾
            Line Input #1, buf  '读取一行字符串到buf
            line = line + 1
            '去除注释
            buf = subcomment(buf)
            If buf = "" Then GoTo donext
            buf = Replace(buf, """", """""")
            '判断宏
            If Mid(buf, 1, 1) = "#" Then
                If cdefine(buf) Then GoTo donext
                If chead(buf) Then GoTo donext
            End If
            左花括号 = InStr(1, buf, "{")
            右花括号 = InStr(1, buf, "}")
            If 左花括号 > 0 And 右花括号 = 0 Then 存在花括号 = True
            '将结构这样带有定义的关键字整体放到一行
            If (InStr(1, buf, "struct") > 0 Or InStr(1, buf, "union") > 0 Or InStr(1, buf, "enum") > 0) And 存在花括号 Then
                is_struct_union_equm = True
                Do While 存在花括号 And Not EOF(1)
                    Line Input #1, s
                    line = line + 1
                    If InStr(1, s, "}") > 0 Then
                    存在花括号 = False
                    buf = buf + s
                    Else
                    buf = buf + s
                    End If
                Loop
            End If
            '判断是否属于结构,联合,枚举等类型
            If is_struct_union_equm Then
                cblock (buf)
                is_struct_union_equm = False '重新置位,防止下一次循环错误使用
                GoTo donext
            End If
            '判断函数
            If fun(buf) Then
            GoTo donext
            '判断变量
            ElseIf cvalue(splitStr(buf)) Then
            GoTo donext
            End If
            If 左花括号 > 0 Then depth = depth + 1
            If 右花括号 > 0 Then depth = depth - 1
            If depth < 0 Then Exit Do
    donext:
        Loop
        Close #1
    文件类型 = "未知"
    句号未知 = InStr(2, 所属文件, ".")
    If 句号位置 > 0 Then
    后缀名 = Mid(所属文件, 句号位置, Len(所属文件) - 句号位置)
        If 后缀名 = "h" Or 后缀名 = "H" Then
            文件类型 = "头文件"
        ElseIf 后缀名 = "c" Or 后缀名 = "C" Then
            文件类型 = "源文件"
        End If
    End If
    sql = "insert into C代码表(文件名,文件类型,代码行数,函数数量,变量数量,引用到的头文件) values(""" _
            + 所属文件 + """,""" + 文件类型 + """," + str(line) + "," + str(fnum) + "," + str(vnum) + ",""" + headfile + """);"
    'MsgBox sql
    DoCmd.RunSQL sql
    MsgBox "文件导入完成"
    加入.Visible = True
    filectrl = True
    Exit Function
    ferr:   '文件读取错误
    Close #1
    MsgBox "文件路径错误"
    End Function
    
    '函数处理
    Function fun(buf)
    Dim 右 As Boolean
    右 = False
    fun = False
     '查找括号,如果存在括号,则将括号前以非英文字符、数字、下划线划分的字符串提出
            length = InStr(1, buf, "(")
            左花括号 = InStr(1, buf, "{")
            右花括号 = InStr(1, buf, "}")
            等于号 = InStr(1, buf, "=")
            If 等于号 <> 0 Then GoTo exitfun
            If length = 0 Then GoTo exitfun
            
            If 左花括号 > 0 And 左花括号 < length Then
                depth = depth + 1
                Exit Function
            End If
            If 右花括号 > 0 And 右花括号 < length Then
                depth = depth - 1
                右 = True
            End If
            strend = length
            If strend > 0 And depth = 0 Then  '存在括号且嵌套深度为0
            a = splitStr(buf)
            函数类型 = ""
            For i = 1 To num
                t = InStr(1, a(i), "(")
                If t > 0 Then
                If t > 1 Then
                    函数名 = Mid(a(i), 1, t - 1)
                    For j = 1 To i - 1
                        函数类型 = 函数类型 + a(j) + " "
                    Next
                Else
                    函数名 = a(i - 1)
                    For j = 1 To i - 2
                        函数类型 = 函数类型 + a(j) + " "
                    Next
                End If
                Exit For
                End If
            Next
            '取出函数参数
            t = InStr(length, buf, ")")
            If t <> 0 Then
            函数参数 = Mid(buf, length, t - length + 1)
            'MsgBox "函数参数:" + 函数参数
            End If
            End If
    If 函数名 <> "" Then
    fun = True
    Else
    Exit Function
    End If
    sql = "insert into 函数(函数名,类型,参数,所在行,所属文件,引用到的函数,定义) values(""" + _
            函数名 + """,""" + 函数类型 + """,""" + 函数参数 + """," + str(line) + ",""" + 所属文件 + _
            """,""" + "未知" + """,""" + "未知" + """);"
    'MsgBox sql
    DoCmd.RunSQL sql
    fnum = fnum + 1
    exitfun:
    If 左花括号 > 0 Then depth = depth + 1
    If 右花括号 > 0 And Not 右 Then depth = depth - 1
    End Function
    
    '去除注释
    Function subcomment(buf)
    Dim length As Integer
    Dim strstart As Integer
    Dim strend As Integer
        strstart = 1
        strend = -1
        '将所有换行符替换为空格
        length = InStr(1, buf, "*/")
        If length > 0 Then
            ann = False
            strstart = length + 2  'i指向有效的字符串位置
        End If
        
        If ann Then
            subcomment = ""
            Exit Function
        End If
       
        If strstart > Len(buf) Then
        subcomment = ""
        Exit Function
        End If
        
        length = InStr(strstart, buf, "/*")
        If length > 0 Then
            strend = length - 1
            ann = True
        End If
        length = InStr(strstart, buf, "//")
        If length > 0 Then
            strend = length - 1
        End If
        If strend = -1 Then
            strend = Len(buf)
        ElseIf strend = 0 Then
            subcomment = ""
            Exit Function
        End If
        '通过strstart和strend两个下标值确定非注释字符串的位置,取出字符串
        buf = Mid(buf, strstart, strend - strstart + 1)
        '去除字符串左右两边的多余空格,制表符
        buf = Replace(buf, vbTab, " ") '将制表符全部替换为空格
        buf = Trim(buf)
        subcomment = buf
    End Function
    '宏处理
    Function cdefine(buf)
    cdefine = False
        第一个空格的位置 = InStr(1, buf, " ")
        If 第一个空格的位置 < 2 Then
        Exit Function
        End If
        第一个字符串 = Mid(buf, 2, 第一个空格的位置 - 2)
        If 第一个字符串 = "define" Then
            第二个空格的位置 = InStr((第一个空格的位置 + 1), buf, " ")
            length = 0
            If 第二个空格的位置 = 0 Then
                If Len(buf) > 第一个空格的位置 Then
                    length = Len(buf) - 第一个空格的位置
                    Else
                    Exit Function
                End If
            Else
                length = 第二个空格的位置 - 第一个空格的位置 - 1
            End If
            第二个字符串 = Mid(buf, 第一个空格的位置 + 1, length)
        Else
            Exit Function
        End If
        If 第二个空格的位置 > 0 Then
            第三个字符串 = Mid(buf, 第二个空格的位置, Len(buf) + 1 - 第二个空格的位置)
        Else
            第三个字符串 = ""
        End If
        'MsgBox "宏:" + 第一个字符串
        'MsgBox "宏名:" + 第二个字符串
        'MsgBox "宏定义:" + 第三个字符串
        sql = "insert into 宏(宏名,值,所在行,所属文件) values(""" + Trim(第二个字符串) + """,""" + Trim(第三个字符串) + """," + str(line) + ",""" + 所属文件 + """);"
        'MsgBox sql
        DoCmd.RunSQL sql
        cdefine = True
    End Function
    '全局变量处理,函数内部的变量识别复杂,而且通常情况没有必要,因此没有实现
    Function cvalue(a)
    Dim i As Integer
    cvalue = False
    类型 = ""
    变量名 = ""
    值 = ""
        If depth <> 0 Then
        Exit Function
        End If
        '遍历a,查看是否有=,如果有说明该变量被赋值
        找到等于号 = False
        For i = 1 To num
            等于号位置 = InStr(1, a(i), "=")
            If 等于号位置 > 0 Then
                找到等于号 = True
                Exit For
            End If
        Next
        If 找到等于号 Then
            For j = 1 To i - 2
                类型 = 类型 + a(j) + " "
            Next
            If 等于号位置 = 1 Then '说明该a(i)第一个字符为等于号
                变量名 = a(i - 1)
                值 = a(num)
                
            Else
                变量名 = Mid(a(i), 1, 等于号位置 - 1)
                类型 = 类型 + a(i - 1) + " "
                值 = Mid(a(i), 等于号位置 + 1, Len(a(i)) - 等于号位置)
            End If
        Else
            变量名 = a(num)
            For j = 1 To num - 1
            类型 = 类型 + a(j) + " "
            Next
        End If
        'MsgBox 变量名
        'MsgBox 类型
        'MsgBox 值
    cvalue = True
    sql = "insert into 变量(变量名,类型,初始值,所在行,所属文件) values(""" + 变量名 + """,""" + 类型 + """,""" + 值 + """," + str(line) + ",""" + 所属文件 + """);"
    DoCmd.RunSQL sql
    vnum = vnum + 1
    End Function
    
    '按空格分割字符串,返回一个字符串数组,这个数组的长度由全集变量num说明
    Function splitStr(codestr)
    Dim a() As String
    num = 1
    Dim i As Integer
    i = 1
    Do While i < Len(codestr)
        b = InStr(i, codestr, " ")
        If b <> 0 Then
            If b > i Then
                ReDim Preserve a(num)
                a(num) = Trim(Mid(codestr, i, b - i))
                num = num + 1
            End If
            i = b + 1
        Else
            Exit Do
        End If
    Loop
    '还有最后一个字符串可能没有读入
    ReDim Preserve a(num)
    a(num) = Trim(Mid(codestr, i, Len(codestr) - i))
    splitStr = a
    End Function
    
    '对结构,联合,枚举的处理
    Function cblock(buf)
    cblock = False
    左花括号 = InStr(1, buf, "{")
    右花括号 = InStr(1, buf, "}")
    If 左花括号 = 0 Or 右花括号 = 0 Then
        Exit Function
    End If
    's储存关键字名
    s = Trim(Mid(buf, 1, 左花括号 - 1))
    定义 = Trim(Mid(buf, 左花括号, 右花括号 - 左花括号 + 1))
    别名 = Trim(Mid(buf, 右花括号 + 1, Len(buf) - 右花括号 - 1))
    If InStr(1, s, "struct") > 0 Then
        sql = "insert into 结构(结构名,定义,别名,所在行,所属文件) values(""" + s + """,""" + 定义 + """,""" + 别名 + """," + str(line) + ",""" + 所属文件 + """);"
        DoCmd.RunSQL sql
    ElseIf InStr(1, s, "union") > 0 Then
        sql = "insert into 联合体(联合体名,定义,别名,所在行,所属文件) values(""" + s + """,""" + 定义 + """,""" + 别名 + """," + str(line) + ",""" + 所属文件 + """);"
        DoCmd.RunSQL sql
    ElseIf InStr(1, s, "enum") > 0 Then
        sql = "insert into 枚举(枚举名,定义,别名,所在行,所属文件) values(""" + s + """,""" + 定义 + """,""" + 别名 + """," + str(line) + ",""" + 所属文件 + """);"
        DoCmd.RunSQL sql
    Else
        Exit Function
    End If
    'MsgBox "名:" + s
    'MsgBox "定义:" + 定义
    'MsgBox "别名:" + 别名
    cblock = True
    End Function
    '处理头文件
    Function chead(buf)
    chead = False
        inc = Mid(buf, 2, 7)
        If inc = "include" Then
        '读取后面括号或者引号之间的文件名
            左 = InStr(9, buf, "<")
            If 左 > 0 Then
                右 = InStr(10, buf, ">")
                If 右 = 0 Then
                Exit Function
                End If
                headfile = headfile + Mid(buf, 左, 右 - 左 + 1) + ";"
            Else
                左 = InStr(9, buf, """")
                右 = InStr(10, buf, """")
                If 左 = 0 Or 右 = 0 Then
                Exit Function
                End If
                headfile = headfile + Mid(buf, 左, 右 - 左 + 1) + ";"
            End If
        End If
    chead = True
    End Function
    
    '标准库操作,将函数表和宏表合并到标准库表
    Function standlib() As Boolean
    standlib = False
    函数表可用 = True
    宏表可用 = True
      Dim db
      Dim 宏表 As Recordset
      Dim 函数表 As Recordset
      Dim s As String       '储存读取标识符
      Set db = CurrentDb    '设定为当前数据库
      Set 宏表 = db.OpenRecordset("select * from 宏")
      Set 函数表 = db.OpenRecordset("select * from 函数")
      If 宏表.EOF And 函数表.EOF Then Exit Function
      
      If 宏表.EOF Then
      宏表可用 = False
      Else: 宏表.MoveFirst
      End If
      If 函数表.EOF Then
      函数表可用 = False
      Else: 函数表.MoveFirst
      End If
      
      Do While (Not 宏表.EOF) Or (Not 函数表.EOF)
        If Not 宏表.EOF And 宏表可用 Then
        On Error GoTo fnext              '错误处理,一般情况是读取到了空表项,此时利用goto来跳转
        宏名 = CStr(宏表.Fields("宏名"))
        On Error GoTo fnext
        宏定义 = Replace(CStr(宏表.Fields("值")), """", """""")
        On Error GoTo fnext
        文件名 = CStr(宏表.Fields("所属文件"))
        sql = "insert into 标准库(宏名,宏定义,文件名) values(""" + 宏名 + """,""" _
            + 宏定义 + """,""" + 文件名 + """);"
        On Error GoTo fnext
        DoCmd.RunSQL sql
        standlib = True
    fnext:
        宏表.MoveNext
        End If
        If Not 函数表.EOF And 函数表可用 Then
        On Error GoTo anext
        函数名 = CStr(函数表.Fields("函数名"))
        On Error GoTo anext
        函数参数 = CStr(函数表.Fields("参数"))
        On Error GoTo anext
        文件名 = CStr(函数表.Fields("所属文件"))
        sql = "insert into 标准库(函数名,函数参数,文件名) values(""" + 函数名 + """,""" _
                + 函数参数 + """,""" + 文件名 + """);"
        On Error GoTo anext
        DoCmd.RunSQL sql
        standlib = True
    anext:
        函数表.MoveNext
        End If
        Loop
        宏表.Close      '关闭表
        函数表.Close
    End Function
    
    

     

    展开全文
  • 【判断题】在函数内部可以通过关键字def来定义全局变量。【多选题】以下属于分类算法的...【判断题】查看变量类型的Python内置函数是type____【单选题】以下关于模块的描述,错误的是( )。【其它】【单选题】人工智能...

    【判断题】在函数内部可以通过关键字def来定义全局变量。

    【多选题】以下属于分类算法的应用是?

    【判断题】Python程序代码需要强制缩进。

    【单选题】有一组供用户标识为感兴趣或不感兴趣的网页,可被机器学习用来解决网页过滤问题,选择下列特征中哪个是通过训练这些网页学来的?

    【判断题】查看变量类型的Python内置函数是type____

    【单选题】以下关于模块的描述,错误的是( )。

    【其它】

    【单选题】人工智能研究的物质基础是( )。

    【判断题】max函数max____可以接收任意多个参数,并返回最大的那个。

    【单选题】Python中,用于获取用户输入的命令为:

    【单选题】以下关于函数的描述,正确的是( )

    【多选题】以下哪些是人工智能时代的基础?

    【判断题】Python内置函数sum____用来返回数值型序列中所有元素之和。

    【简答题】分组名单和每组招标文件以附件形式上传

    【判断题】Python语言是一种编译型高级程序设计语言。

    【判断题】如果函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为Fasle。

    【简答题】简述计算机的几大应用领域—列举5项即可。

    【判断题】Python程序可以在不同的操作系统中运行。

    【判断题】Python2.0版本与Python3.0版本可以互相兼容。

    【简答题】请阅读以下代码,并写出1秒中内超级终端的输出内容 void Main (void) { Target_Init(); GUI_Init(); OSInit(); Send_D7light_Sem = OSSemCreate(0); OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1[STACKSIZE - 1], 5); OSStart(); } void Task_1 (void *pdata) { INT32U i,flag=0; Timer1_Init(); OSTaskCreate(Task_2, (void *)0, (OS_STK *)&Stack_Task_2[(STACKSIZE*3) - 1], 56); for(;;) { flag++; if(flag=2){ OSTimeDly(240); Uart_Printf("This is TASK1. %x\n" ,flag); OSSemPost(Send_D7light_Sem); flag=0; } } } void Task_2 (void *pdata) { INT8U err,flag=0; for(;;) { OSSemPend(Send_D7light_Sem, 0, &err); Uart_Printf("This is TASK2. \n");

    【判断题】Python内置函数max____用来返回序列中的最大元素。

    【单选题】( )函数以一系列列表作为参数,将列表中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

    【单选题】关于函数参数传递中,形参与实参的描述错误的是( )。

    【判断题】Python程序代码是开放的,加密困难。

    【判断题】Python内置函数min____用来返回序列中的最小元素。

    【单选题】关于函数的下列说法不正确的是:

    【多选题】大数据分析的基本模式()

    【单选题】关于自定义函数的下列说法不正确的是:

    【单选题】在Python中,以下关于函数的描述错误的是哪一项?

    【判断题】PythonManuals是Python的模块文档。

    【单选题】以下四个人工智能的应用领域中,与其他三个不同的是:

    【判断题】Python内置函数open____用来打开或创建文件并返回文件对象。

    【单选题】对于结构化数据表述正确的是()。

    【单选题】被誉为计算机科学与人工智能之父的是

    【其它】作业1:数据库连接 连接属性 显示“产品”表的所有记录 作业2:按类别查询 作业3:添加“类别” 作业4:调用存储过程 作业5:Page212 例7-5

    【多选题】以下关于机器学习说法正确的是?

    【其它】物业管理实务课程设计总结.docx 以组为单位填写并上传

    【单选题】( )函数是指直接或间接调用函数本身的函数

    【单选题】以下关于Python的说法中正确的是哪一项?

    【判断题】Python内置函数len____可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。

    【判断题】Python语言是一种解释型高级程序设计语言。

    【判断题】IDLE是Python的命令控制台,可以执行Python命令。

    【判断题】要调用一个函数,需要知道函数的名称和参数。

    【简答题】简述计算机的特点

    【判断题】Python语言是一种面向对象的高级程序设计语言。

    【判断题】PythonModuleDocs是Python的帮助文档。

    【简答题】说出下列指令的寻址方式,并用语言阐述该指令的意思。(建议分值 50% ) ( 1 ) ADD R0,R1,#256 ( 2 ) SUB R0,R2,R3,LSL #1 ( 3 ) STRB R0,[R1] ( 4 ) STR R0,[R1],#8 ( 5 ) LDR R0,[R1],R2 ( 6 ) LDR R0,[R1,#8] ( 7 ) LDR R0,[R1],R2,LSR #3 ( 8 ) LDMFD R13!,{R0,R4-R12,PC}

    【判断题】Python程序运行速度要比C程序运行快。

    【单选题】在读写文件之前,必须通过以下哪个方法创建文件对象:

    【填空题】1AFH=_______________D

    展开全文
  • size和strlen

    2017-03-26 09:08:00
    sizeof运算符(用法类似函数)作用:用来返回()里面变量或者数据类型占用的内存字节数。 sizeof存在的价值?主要是因为在不同平台下各种数据类型所占的内存字节数不尽相同(譬如int在32位系统中为4字节,在16位系统...


    sizeof运算符(用法类似函数)
    作用:用来返回()里面变量或者数据类型占用的内存字节数。

    sizeof存在的价值?
    主要是因为在不同平台下各种数据类型所占的内存字节数不尽相同(譬如int在32位系统中为4字节,在16位系统中为2字节···)。所以程序中需要使用sizeof来判断当前变量/数据类型在当前环境下占几个字节。

     

    strlen是一个C库

    函数(可用man strlen 查看在哪个头文件中)
    作用:测量字符串的有效长度,一定要注意strlen接收的参数必须是一个字符串(字符串的特征是以'\0'结尾)

    例如:

    char str[] = "hello"; 
    printf("sizeof(str) = %d.\n", sizeof(str));    // 6    将\0也算在内
    printf("sizeof(str[0]) = %d.\n", sizeof(str[0]));    // 1    打印的是首字符
    printf("strlen(str) = %d.\n", strlen(str));    // 5    字符串的有效长度,不包括末尾符
    
    注:str[]是字符串数组,在末尾是用“\0”结尾;

     


    例子2:

    char str[] = "hello"; 
    char *p = str; 
    printf("sizeof(p) = %d.\n", sizeof(p));    // 4 相当于sizeof(char *),指针变量的长度
    printf("sizeof(*p) = %d.\n", sizeof(*p));    // 1 相当于sizeof(char),字符数组的首字符长度
    printf("strlen(p) = %d.\n", strlen(p));    // 5 相当于strlen(str),字符串的有效长度
    
    注:在32位的系统中所有的指针长度都为4:    

     (参考朱有鹏老师代码)




    转载于:https://www.cnblogs.com/ziv3/p/6621498.html

    展开全文
  • 通过属性进行自动注册的,假如在类型中含有对应DelegateBridge静态字段的Hotfix变量,则会自动对此变量进行赋值,保存一些参数 在实际使用补丁方式热更时,经常遇到一些,只是需要在原有函数之前或之后添加一些代码...
  • 高级Shell脚本编程

    2013-10-28 10:08:19
    4.4. 特殊的变量类型 5. 引用 5.1. 引用变量 5.2. 转义 6. 退出和退出状态码 7. 条件判断 7.1. 条件测试结构 7.2. 文件测试操作符 7.3. 其他比较操作符 7.4. 嵌套的if/then条件测试 7.5. 检测你对测试知识...
  • when.py:提供用户友好的函数来帮助用户进行常用的日期和时间操作。 dateutil:Python 标准包 datetime 的扩展。 moment:一个处理日期/时间的库,灵感来自 Moment.js。 pytz:支持跨平台时区计算,并将 tz ...
  • jQuery详细教程

    2013-04-25 14:16:42
    如果您的网站包含许多页面,并且您希望您的 jQuery 函数易于维护,那么请把您的 jQuery 函数放到独立的 .js 文件中。 当我们在教程中演示 jQuery 时,会将函数直接添加到 <head> 部分中。不过,把它们放到一个单独的...
  • 核对将要安装数据的详细信息,并保存响应文件,以备以后查看。然后点击完成数据库安装 8. 步骤7/8:安装产品 产品安装过程中将会出现以上2个界面 9. 步骤8/8:完成安装  卸载Oracle 1. 在运行services.msc...
  • java 面试题 总结

    2009-09-16 08:45:34
    对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符...
  • 对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    42. 哪个VIEW用来判断tablespace的剩余空间 35 43. 如何判断谁往表里增加了一条纪录? 35 44. 如何重构索引? 35 45. 解释什么是Partitioning(分区)以及它的优点。 35 46. 你刚刚编译了一个PL/SQL Package但是有错误...
  • 作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
  • 作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    8. 下列哪个函数可以把一个列中的所有值相加求和? ( B ) A MAX B. SUM C. COUNT D. AVG 9. 下列哪个子句是SELECT语句中必选项?( A ) A. FROM B.WHERE C.HAVING D. ORDER BY 10. 下列哪个子句实现对一个结果集进行...
  • 如您所见,brk() 或者 mmap() 都可以用来向我们的进程添加额外的虚拟内存。在我们的例子中将使用 brk(),因为它更简单,更通用。 实现一个简单的分配程序 如果您曾经编写过很多 C 程序,那么您可能曾多次使用过 ...
  • 3.1.6 C中变量的存储类型有哪些? 3.1.7 动态规划的本质 3.1.8 实践中如何优化MySQL? 3.1.9 什么情况下设置了索引但无法使用? 3.2.0 SQL语句的优化 3.2.1 数据库索引的底层实现原理和优化 3.2.2 HTTP和HTTPS的...
  • 操作系统(内存管理)

    热门讨论 2009-09-20 12:55:25
    如您所见, brk() 或者 mmap() 都可以用来向我们的进程添加额外的虚拟内存。在我们的例子中将使用 brk(),因为它更简单,更通用。 实现一个简单的分配程序 如果您曾经编写过很多 C 程序,那么您可能曾多次使用过 ...
  • flash shiti

    2014-03-14 10:32:41
    9.Flash可接受的当鼠标放在按钮上时产生效果的鼠标操作是哪个? A. Press B. Release C. Release Outside D. Roll Over 10.Flash action“var”意义是? A. 卸载动画片段符号 B. 声明局部变量 C. 当…成立时 ...
  • 1.3 数据库的类型 6 1.3.1 联机事务处理和决策支持系统数据库 6 1.3.2 开发、测试和产品数据库 7 1.4 培训和认证 7 1.4.1 培训 7 1.4.2 认证 8 1.4.3 Oracle DBA的资源和组织 10 1.4.4 Oracle示例 ...
  • SSO-WebDemo

    2013-08-12 20:25:57
    如果举例说国内一著名的IT公司(名字隐去),内部共有60多个业务系统,这些系统包括两个不同版本的SAP的ERP系统,12个不同类型和版本的数据库系统,8个不同类型和版本的操作系统,以及使用了3种不同的防火墙技术,...
  • ELDK使用与开发手册

    2018-03-07 10:53:39
    嵌入式Linux开发工具套件(ELDK)包括GNU交叉开发工具,如编译器、binutils、gdb等工具,和一些已经编译好的目标工具以及负责提供在目标平台上函数调用的库文件。还免费提供了所有的源代码,包括全部补丁、扩展文件、...
  • 人力资源管理软件(完全免费)

    热门讨论 2011-03-08 11:36:20
    考勤管理增加了查看某一天哪些人休息的功能(感谢人生淡泊) 人力资源管理软件解决了考勤台帐的显示问题(感谢天隼) 考勤班次处理做了优化,增加了打卡的分析类型(参考型)(感谢天隼) 保险支付中提供了excel导出...
  • Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中 ...
  • FAQ(持续更新)

    2021-01-08 12:27:51
    11 std::function类型的callback和process来包装用户行为,因此用户需要知道自己是在编写异步程序。我们认为callback方式比future或用户态协程能给程序带来更高的效率,并且能很好的实现通信与计算的...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

哪个函数用来查看变量类型