我写了一个看起来像这样的测试程序:
#!/usr/bin/python
def incrementc():
c = c + 1
def main():
c = 5
incrementc()
main()
print c
Run Code Online (Sandbox Code Playgroud)
我认为,因为我在main的主体内调用了incrementc,所以main中的所有变量都会传递给incrementc.但是当我运行这个程序时,我得到了
Traceback (most recent call last):
File "test.py", line 10, in <module>
main()
File "test.py", line 8, in main
incrementc()
File "test.py", line 4, in incrementc
c = c + 1
UnboundLocalError: local variable 'c' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
为什么c不通过?如果我想让一个变量被多个函数引用,我是否必须全局声明它?我在某处看到全局变量很糟糕.
谢谢!
当编译器读取"int*p?"时编译器在做什么?是否假设p将成为指向整数数组的指针?星形运算符只能用于数组吗?
在我班上的讲义中,有一个功能
Obj3D * findObject (int objID) {
Obj3D *pObj = ...
if (pObj == 0) {
throw BadObjectID (objID);
return pObj;
Run Code Online (Sandbox Code Playgroud)
为什么函数返回指向对象的指针,但函数的返回类型是一个对象?
我应该写
class MyClass:
def __init__(self):
self.field = 0
Run Code Online (Sandbox Code Playgroud)
要么
class MyClass:
def __init__(self):
field = 0
Run Code Online (Sandbox Code Playgroud)
这些陈述之间有什么区别吗?
为什么是
int *a = new int[10];
Run Code Online (Sandbox Code Playgroud)
写作
int *a;
a = new int[10];
Run Code Online (Sandbox Code Playgroud)
代替
int *a;
*a = new int[10];
Run Code Online (Sandbox Code Playgroud)
?
我看到它的方式,在你说的第二个代码块中,它是一个指针变量,现在是一个数组.在第三个代码块中,你所说的东西现在是一个数组.为什么第二个比第三个更有意义?
在我的C++类中,他们讨论了如何创建赋值运算符.在赋值的最后是"return*this"行,他们说这些行返回了对"this"指向的对象的引用.为什么它会返回参考?如果"this"被取消引用,它不应该只返回对象吗?
因此,据我了解,您可以通过返回指向它们的指针来返回C++中的对象.但我的印象是,一旦函数完成运行,就会在所有对象上调用析构函数.为什么不在你返回的对象上调用析构函数?
所以我创建了一个struct,其唯一元素是指向数组的指针.当我初始化这个数组时,我得到一个分段错误.你能告诉我为什么吗?
这是代码:
typedef struct {
int *data;
} A;
/* Class definition */
class C {
A* a;
public:
C(void);
};
/* Constructor */
C::C(void) {
a->data = new int[10];
}
int main(void) {
C();
}
Run Code Online (Sandbox Code Playgroud)
谢谢!