过去几个小时我遇到了一个问题,虽然我明白了.这是我的麻烦:
void cut_str(char* entry, int offset) {
strcpy(entry, entry + offset);
}
char works[128] = "example1\0";
char* doesnt = "example2\0";
printf("output:\n");
cut_str(works, 2);
printf("%s\n", works);
cut_str(doesnt, 2);
printf("%s\n", doesnt);
// output:
// ample1
// Segmentation: fault
Run Code Online (Sandbox Code Playgroud)
我觉得char*/char []有一些重要的东西,我没有来到这里.
我目前想知道为什么这个适度的代码有一个我不期望的输出:
class Product(object):
price = 0
def __init__(self, tmp_price):
self.price = tmp_price
class Market(object):
products = []
def __init__(self):
self.products.append(Product(10))
a = Market()
b = Market()
print a.products[0]
print b.products[0]
print len(a.products)
Run Code Online (Sandbox Code Playgroud)
的确,我得到了一些输出:
<__main__.Product object at 0x7fe5899e46d0>
<__main__.Product object at 0x7fe5899e46d0>
2
Run Code Online (Sandbox Code Playgroud)
有人有解释吗?我想这与python处理引用的方式有关,除了......