您好我正在尝试理解Python的引用如何通过工作.我有一个例子:
>>>a = 1
>>>b = 1
>>>id(a);id(b)
140522779858088
140522779858088
Run Code Online (Sandbox Code Playgroud)
这非常有意义,因为a和b都引用了与身份相同的值.我不太明白的是这个例子:
>>>a = 4.4
>>>b = 1.0+3.4
>>>id(a);id(b)
140522778796184
140522778796136
Run Code Online (Sandbox Code Playgroud)
与此示例不同:
>>>a = 2
>>>b = 2 + 0
>>>id(a);id(b)
140522779858064
140522779858064
Run Code Online (Sandbox Code Playgroud)
是因为在第3个例子中,0 int对象被解释器视为"None",并且没有被识别为需要与变量"a"引用的对象不同的身份(2)?而在第二个例子中,"b"是添加两个不同的int对象,而解释器是为要添加的两个对象分配内存,这给变量"a",与变量"b"不同的标识?
例如:
hello1.jpg
hello2.jpg
hello3.jpg
Run Code Online (Sandbox Code Playgroud)
我想编辑它,就像这样:
hello1.jpg 0
hello2.jpg 0
hello3.jpg 0
Run Code Online (Sandbox Code Playgroud)
我试过了:
sed -i '/(hello*)/ s/$/ 0/' hello.txt
perl -ipe 's/$/ 0/ if /hello/' hello.txt
sed -i '/^hello*/ s/$/ 0/' hello.txt
Run Code Online (Sandbox Code Playgroud) 为什么当我递增指针然后取消引用它时,我得到一个随机数?
这是我的代码:
#include <iostream>
using namespace std;
int main(){
int reference = 10;
int *health = &reference;
int *health1 = health;
cout << "Health Address: " << health <<
"\nHealth1 Address: " << health1 <<
"\nReference Address: " << &reference << endl;
health1++;
cout << "Health1 value after being incremented then dereferenced: " << *health1 << endl;
}
Run Code Online (Sandbox Code Playgroud)
我的输出是:
健康地址:0x7fff5e930a9c
Health1地址:0x7fff5e930a9c
参考地址:0x7fff5e930a9c.
增加后的Health1值然后取消引用:197262882
我期望获得0,因为下一个内存地址的下一个值将为null,但在这种情况下情况并非如此.
如果我有一个功能:
void G(int f){
printf("Hello");
}
Run Code Online (Sandbox Code Playgroud)
(我知道这个函数没有意义的参数,但我只是为了问题)
即使没有定义并且没有在其中使用,"int f"在函数内部是否可见?