首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C 语言】变量本质 ( 变量修改 | 直接修改变量 | 通过内存地址间接修改变量 | 通过指针间接修改变量 )

文章目录 一、变量修改 1、直接修改变量 2、通过内存地址间接修改变量 3、通过指针间接修改变量 一、变量修改 ---- 访问 变量 , 就是 访问 内存空间 ; 访问 指的是 读写 内存 ; 修改变量的方式...: 直接修改 : 通过 变量 , 可以 直接 修改内存 , 间接修改 : 通过取地址符 , 拿到变量所在内存的 地址编号 , 通过地址编号修改内存 ; 1、直接修改变量 #include <stdio.h...n", a, &a); return 0; } 执行结果 : a=1, &a=6422220 2、通过内存地址间接修改变量 #include int main() {...); return 0; } 执行结果 : a=1, &a=6422216 a=2, &a=6422216 3、通过指针间接修改变量 #include int main..., a, &a); // 间接修改 : 通过内存地址 // 获取 变量 a 的地址 , // 直接修改该地址对应的内存空间中的数据 *( &a ) = 2;

1.2K10

通过字符串访问generate模块内部的变量

直接将代码展开 举个例子,我有两个数组reg [7:0] a [7:0]和reg [7:0] b [7:0],我需要把他们对应元素相乘,那么可以这么做 genvar i; reg [ 7:0] a [...通过路径i_test.genblk1[3].i_adder.c_f就能访问到对应的变量 // Module: tb // module tb(); logic clk,rst_n; logic...其实主要原因是,这个genblk1根本就不是一个数组,也就无法通过这种索引的方法访问到对应变量 解决办法 目前我能想到的方法就是通过uvm提供的函数uvm_hdl_read实现,他在底层通过dpi从外部访问变量...,因此可以通过字符串访问到对应的变量。...UVM_HDL_MAX_WIDTH = `UVM_HDL_MAX_WIDTH; typedef logic [UVM_HDL_MAX_WIDTH-1:0] uvm_hdl_data_t; 因此,我们可以通过下面的代码访问

78820
您找到你想要的搜索结果了吗?
是的
没有找到

Python3通过字符串访问与修改局部变量

并且需要注意的是,全局变量x自始至终都没有在局部变量中出现。那么既然我们可以通过这种方式分离出局部变量,或者是局部变量的名称,那我们如何去调整或者修改这些局部变量呢?...()['n']=3 print (locals()) print (z) if __name__ == '__main__': Obj(2) 在这个案例中分别通过...而z的最终打印输出是1,这表明z的值确实没有受到对vars的变量修改的影响。那到底有没有办法可以通过字符串去修改局部变量呢(不同步到全局变量)?...z是被成功修改了的,但是在前面提到的,即使我们通过这种方法修改了局部变量的值,但是依然不能通过这个方案去创建一个新的局部变量,此时去执行print (n)的话,依然会有报错提示。...在前一篇博客中,我们就介绍了通过__dict__去给类中的成员变量进行赋值,非常的方便。

53820

SHELL(bash)脚本编程一:变量

bash提供一维的索引和关联数组变量,索引数组是以数字为下标的数组关联数组是以字符串为下标的数组(类似其他语言中的map或dict)。...=,关联数组不能省略。...#索引数组赋值的一般形式: name_index=(aa bb cc dd ee) #关联数组赋值之前,必须先通过内置命令declare进行声明,然后才能赋值: declare -A name_associate...声明/定义及赋值 通常bash变量是不需要提前声明的,可以直接进行赋值。变量的值均被视为字符串(在一些情况下也可以视为数字)。当对变量有特殊需要时,也可以先声明变量(如前面关联数组的声明)。...$@和$*的情况一致) 间接引用 在对变量进行取值时,变量名前的符号!

2.7K40

xsync集群分发脚本的改良

/test.sh 3.txt 5.txt 125435i 125435i 此处↓ 知识点:间接变量 #!...=`cd $dname;pwd` #echo $dir done 解释一下,用到一个知识点:间接变量 1.使用间接变量你这个使用间接变量就可以解决了,这是我之前的笔记: 什么是间接变量:假设一个变量的值是第二个变量的名字...,举个例子:x=a, a=123, 就是通过x这个变量,来引用123这个值,bash4.0-中文文档里的介绍:在很多其它语言中,可以用 $$A 来表示以 $A 为名称的间接变量,而 bash shell...中不可以,即使 $$A 这样的也不可以;bash shell只识别感叹号形式的间接变量。.../bin/bash #把参数转化为数组 a=( "$@" ) #遍历数组 for i in ${a[*]};do echo $i done 执行结果: # sh test.sh

50230

shell数组与awk数组

一.数组基本概述 1.什么是数组 数组其实也算是变量, 传统的变量只能存储一个值, 但数组可以存储多个值。...2.数组的分类 shell数组分为普通数组关联数组 普通数组:只能使用整数 作为数组索引 关联数组:可以使用字符串 作为数组索引 二.数组基本使用 1.普通数组仅能使用整数来作为索引 (1).普通数组的赋值...-A info [root@manager /tmp/sh/awk]# declare -A info2 #2.方式一, 关联数组的赋值 (数组名[索引]=变量值 ) [root@manager /tmp...]=docker [index4]='bash shell') #4.查看关联数组 [root@manager /tmp/sh/awk]# declare -A 2.如何访问关联数组中的数据 [root...${ info2[@]} #访问数组中所有元数 等同于 echo ${ info2[*]} bash shell linux nginx docker [root@manager

58920

shell基础

重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。 # 3、 shell脚本能干啥?...查看普通数组 -A 定义关联数组;查看关联数组 -x 将变量通过环境导出 declare -x AAA=123456 等于 export AAA=123456 举例说明: # declare -i...数组定义 # 1、数组分类 普通数组:只能使用整数作为数组索引(元素的下标) 关联数组:可以使用字符串作为数组索引(元素的下标) # 2、 普通数组定义 一次赋予一个值 数组名[索引下标]=值 array...array[@]} 获取数组元素的索引下标 echo ${array[@]:1:2} 访问指定的元素;1代表从下标为1的元素开始获取;2代表获取后面几个元素 查看普通数组信息...: # declare -a # 4、关联数组定义 # 1、首先声明关联数组 declare -A asso_array1 declare -A asso_array1 declare -A asso_array2

1.8K30

第三十六章 : 数组

数组是一次能存放多个数据的变量数组的组织结构就像一张表。我们拿电子表格举例。一张电子表格就像是一个二维数组。它既有行也有列,并且电子表格中的一个单元格,可以通过单元格所在的行和列的地址定位它的位置。...Here is an example: 数组变量就像其它 bash 变量一样命名,当被访问的时候,它们会被自动地创建。...这里我们看到一个赋值并访问数组元素的例子。通过第一个命令,把数组 a 的元素1赋值为 “foo”。第二个命令显示存储在元素1中的值。...Associative array elements are accessed in much the same way as integer indexed arrays: 访问关联数组元素的方式几乎与整数索引数组相同...如果我们在 bash 手册页中搜索单词 “array”的话,我们能找到许多 bash 在哪里会使用数组变量的实例。其中大部分相当晦涩难懂,但是它们可能在一些特殊场合提供临时的工具。

45400

linux awk 数组和循环

awk 作为强大的文本处理工具,少不了数组处理。 awk 中数组叫做关联数组(associative arrays),下标可以是数字也可以是字符串。...类似一维数组的循环访问,多维数组使用 for ( item in array ) 语法遍历数组。...(asort) asort对数组array按照首字母进行排序,返回数组长度; 如果要得到数组原本顺序,需要使用数组下标依次访问; for…in 输出关联数组的顺序是无序的,所以通过for…in 得到是无序的数组...如果需要得到有序数组,需要通过下标获得 示例: #!...这是因为awk数组关联数组,只要通过数组引用它的key,就会自动创建改序列 正确做法是用: in awk ‘BEGIN{array[“a”]=”aaa”; array[“b”]=”bbb”; if(“

3.6K10

Shell脚本编程_shell简单脚本

② 引用数组所有元素 ③ 数组的长度,即数组中元素的个数 (6) 删除数组 ① 删除数组中的某个元素 ② 删除整个数组 (7) 数组数据处理 ① 数组切片 ② 向数组中追加元素 (8) 关联数组 (9...) 数组脚本示例 ---- 1. shell 概述 1.1 shell 和 shell 脚本   shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,在用户和内核之间充当翻译官的角色...bash shell 中内置的变量,在脚本代码中调用通过命令行传递给脚本的参数。...数组名和索引: 索引的编号从0开始,属于数值索引 索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0 版本之后开始支持 bash数组支持稀疏格式(索引不连续) (2) 声明数组...: Shell 关联数组 Shell 中的关联数组,获取数组索引 (9) 数组脚本示例 范例:生成 10 个随机数保存于数组中,并找出其最大值和最小值 #!

7.8K10

linux awk 数组和循环

awk 作为强大的文本处理工具,少不了数组处理。 awk 中数组叫做关联数组(associative arrays),下标可以是数字也可以是字符串。...类似一维数组的循环访问,多维数组使用 for ( item in array ) 语法遍历数组。...(asort) asort对数组array按照首字母进行排序,返回数组长度; 如果要得到数组原本顺序,需要使用数组下标依次访问; for...in 输出关联数组的顺序是无序的,所以通过for…in 得到是无序的数组...如果需要得到有序数组,需要通过下标获得 示例:  #!...这是因为awk数组关联数组,只要通过数组引用它的key,就会自动创建改序列 正确做法是用: in awk 'BEGIN{array["a"]="aaa"; array["b"]="bbb"; if("

4K21

第七节(指针)

在C程序中声明一个变量时,编译器会预留一个内存位置来储存该变量,此位置有唯一的地址。 编译器把该地址与变量名相关联。当程序使用该变量名时,将自动访问正确的内存位置。...通过变量访问变量的内容,称为直接访问 ; 通过指向变量的指针访问变量的内容,称为间接访问间接取值。 下面图解释了将间接运算符放在指针名前,引用的是指针所指向变量的值。 仔细思考一下上述内容。...在大多数情况下,还要传递数组中元素的个数。 在函数中,可以通过下标表示法或指针表示法,通过指针来访问数组元素。 警告:给函数传递一个普通变量时,传递的是该变量的副本。...数组名是指向该数组首元素的指针。通过指针的运算特性,可以很方便地使用指针来访问数组元素。实际上,数组下标表示法就是指针表示法的特殊形式。 本次还介绍了通过传递指向数组的指针来将数组作为参数传递给函数。...指针是储存其他变量地址的变量。 8:什么是间接取值(indirection ) ? 间接取值指的是,用指针向变量指针访问变量的内容。 9:在内存中,如何储存数组的元素?

17940

Linux学习笔记(四)

(这也是它们被称作环境变量的原因)。这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们。这也是存储持久数据的一种简便方法。...somekey=somevalue # 先创建一个局部环境变量 export somekey # 再通过export将其导入到全局变量变量。注意:不需要$符号。...即使再通过export导出也不会影响父进程,只会影响当前子进程的子进程。 删除环境变量 unset somekey # 删除环境变量。...shell环境变量 除了默认的Bourme的环境变量bash shell还提供一此 自有的变量 变量 描述 BASH 当前shel实例的全路径名 BASH_ALIASES 含有当前已设置别名的关联数组...BASH_ARGC 含有传入子函数或shel脚本的参数总数的数组变量 BASH_ARCV 含有传入子函数或shell脚本的参数的数组变量 BASH_CMDS 关联数组,包含shell执行过的命令的所在位置

1.1K10

深入解析C语言数组和指针(0)

但是记住他们的地址太麻烦了,所以高级语言提供通过名字而不是地址来访问内存位置的功能,下面用名字代替地址: ?   这些名字我们称之为变量。...名字和内存位置之间的关联并不是硬件提供的,而是编译器为我们实现的,硬件仍然通过地址访问内存位置。...间接访问操作符 通过一个指针访问它所指的地址的过程称为间接访问或解引用指针。操作符为*。根据前面的声明我们有: ?   我们可以知道,d的值为100。...间接访问操作符所需要的操作数是个右值,但它所产生的结果是个左值。指针变量可以作为左值,并不是因为它们是指针,而是因为它们是变量。...指针、间接访问变量   给出下面表达式: *&a = 25;   这个表达式的含义是,把25赋值给a。&操作符取得a的地址,它是一个指针常量,接着*对他进行间接访问其操作数所表示的地址。

1.3K30

【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

文章目录 一、判定指针合法性 二、数组越界 三、不断修改指针变量值 四、函数中将栈内存数组返回 五、函数间接赋值形参操作 六、指针取值与自增操作 一、判定指针合法性 ---- 判定指针合法性时 , 必须进行如下判断...---- 定义数组变量后 , 为其赋值时 , 赋值的内容 超出了数组的大小 ; 错误示例 : "abc" 字符串需要 4 字节内存 , 后面第 4 个字节是 \0 字符 ; // 错误示例...char str[3] = "abc"; 三、不断修改指针变量值 ---- 凡是涉及到修改 指针 变量值时 , 不要直接修改 原来的 指针变量 指向 ; 推荐 创建新的 临时局部指针变量 , 接收该 指针..., 需要修改指针时 , 修改 该 临时局部指针变量 ; 四、函数中将栈内存数组返回 ---- 如果在函数中 , 需要 创建一块内存空间 , 返回给调用者 ; 这块在 函数中 创建的内存 , 不能是数组...; 五、函数间接赋值形参操作 ---- 在函数中 , 如果需要通过 函数的 形参指针变量 通过 间接赋值 返回相关结果 , 这个指针使用时要慎重 ; 建议 创建一个 临时局部指针变量 , 接收该 形参指针

2.1K10

Bash脚本中创建和使用数组方法总结

Bash中定义一个数组 有两种方法可以在bash脚本中创建新数组。第一个是使用declare命令来定义一个Array。此命令将定义名为test_array的关联数组。...$ test_array=(apple orange lemon) 访问数组元素 与其他编程语言类似,bash数组元素可以使用索引号从0开始,然后从1、2、3…n开始访问。...这也适用于索引号为数字的关联数组。 echo {test_array[0]} apple 使用@或*而不是特定索引号打印数组的所有元素。...echo {test_array [@]} apple orange lemon 通过数组循环 还可以使用bash脚本中的循环访问数组元素。...mango banana 更新数组元素 要更新数组元素,只需通过索引将任何新值分配给现有数组

12.3K41

C语言中处理结构体的原理

汇编中有几种寻址方式,分别是直接寻址:(ds:[idata])、寄存器间接寻址(ds:[bx])、寄存器相对寻址(ds:[bx + idata]、ds:[bx + si])基址变址寻址(ds:[bx +...现在假设公司的CEO在富豪榜上的排名为38,收入增加了70,代表产品变为VAX,通过汇编编程修改上述信息,以下是相应的汇编代码:(假设数据段为seg) mov ax,seg mov ds,ax mov...,系统会先根据定义分配相应大小的空间,并将各个变量名与内存关联起来,结构体对象名与系统分配的空间的首地址相对应(定义的结构体对象的首地址在段中的相对地址存储在bx中),即在使用dec名时实际与汇编代码“...根据数组名可以找到数组的首地址,但数组中具体元素的访问则需要给定元素个数,即si的值来定位数组中的具体内存,C语言中的 ++i 相当于汇编中的 (add si ,数组中元素的长度)。...对象中的变量名与该变量在对象所在内存中的偏移地址相关联数组中的标号用于定位数组中的元素在数组中的相对位置。

95720

shell脚本编程之路1

/`用来执行脚本,表示当前目录下,也可以用绝对路径 bash hello.sh #通过bash调用执行脚本 #补充:当然也可以不同赋予权限采用source执行(两种形式) # File文件默认权限:...的时候会同时存在三种变量: 局部变量: 在脚本或命令中定义,仅仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量; 环境变量:所有程序包括shell启动的程序都能访问环境变量,有些程序需要环境变量来保证其正常运行...在一个array 结构的上下文中,中括号用来引用数组中每个元素的编号,如a[1] 4.双中括号,方括号[[]] [[是 bash 程序语言的关键字: 它并不是一个命令,[[ ]] 结构比[ ]结构更加通用...$unset -v TPATH #删除tpath变量 $env | grep "TPATH" #数组整型 # -a 数组类型 # -i 整数 # -x 环境变量 # -r 只读变量.../bin/bash # 实现变量间接引用 BLACK='\E[1;30m' RED='\E[1;31m' GREEN='\E[1;32m' YEELOW='\E[1;33m' BLUE='\E[1;34m

2.7K20
领券