小编i l*_*low的帖子

谁能帮我理解Python变量范围?

我写了一个看起来像这样的测试程序:

#!/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不通过?如果我想让一个变量被多个函数引用,我是否必须全局声明它?我在某处看到全局变量很糟糕.

谢谢!

python function

1
推荐指数
1
解决办法
361
查看次数

当C++编译器读取"int*p"时,它正在做什么?

当编译器读取"int*p?"时编译器在做什么?是否假设p将成为指向整数数组的指针?星形运算符只能用于数组吗?

c++

1
推荐指数
1
解决办法
160
查看次数

我再次对指针感到困惑

在我班上的讲义中,有一个功能

Obj3D * findObject (int objID) {
   Obj3D *pObj = ...
   if (pObj == 0) {
      throw BadObjectID (objID);
   return pObj;
Run Code Online (Sandbox Code Playgroud)

为什么函数返回指向对象的指针,但函数的返回类型是一个对象?

c++ pointers

1
推荐指数
1
解决办法
61
查看次数

在Python对象中设置数据字段时,我应该使用"self"关键字吗?

我应该写

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)

这些陈述之间有什么区别吗?

python

1
推荐指数
1
解决办法
1561
查看次数

为什么C程序返回一个int?

如果我告诉它返回任何其他内容,我通常会收到编译器的警告.

c

1
推荐指数
2
解决办法
113
查看次数

指针和作业

为什么是

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++

0
推荐指数
1
解决办法
134
查看次数

为什么"return*this"会返回引用?

在我的C++类中,他们讨论了如何创建赋值运算符.在赋值的最后是"return*this"行,他们说这些行返回了对"this"指向的对象的引用.为什么它会返回参考?如果"this"被取消引用,它不应该只返回对象吗?

c++

0
推荐指数
1
解决办法
232
查看次数

为什么析构函数不会被调用返回的对象?

因此,据我了解,您可以通过返回指向它们的指针来返回C++中的对象.但我的印象是,一旦函数完成运行,就会在所有对象上调用析构函数.为什么不在你返回的对象上调用析构函数?

c++

0
推荐指数
1
解决办法
346
查看次数

结构内部的数组

所以我创建了一个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)

谢谢!

c++ arrays structure

0
推荐指数
1
解决办法
94
查看次数

键入#include <iostream>时,是否包含模板?

我只是想知道,因为如果你打字#include <map>,你就包括了地图模板.

c++

-1
推荐指数
1
解决办法
161
查看次数

标签 统计

c++ ×7

python ×2

arrays ×1

c ×1

function ×1

pointers ×1

structure ×1