所以代码:
int *mine, *yours; // note this declaration
mine = new int;
yours = mine;
*yours = 8;
delete yours;
*mine = 12;
mine = NULL;
我们可以定义指针吗,你这样吗?这段代码有什么问题吗?
此外,
size_t length = 47;
int* plength = &length;
这段代码好吗?
答案 0 :(得分:2)
我们可以定义指针吗,你这样吗?
是。如果你不能,编译器就会抱怨。
这段代码有什么问题吗?
是。两个指针都指向同一个对象,您可以通过mine
删除后通过yours
访问该对象。访问已删除对象的残余会产生未定义的行为。
这段代码好吗?
不,大概是编译器告诉你的。 size_t
和int
是不同的类型,因此int*
指针不能被赋予size_t
对象的地址(没有邪恶的演员)。
答案 1 :(得分:0)
我们可以定义指针吗,你这样吗?这段代码有什么问题吗?
绝对没问题。我建议您以这种方式使用相同类型的指针声明时可以使用typedef
以获得更清晰的信息,
typedef int *p_int;
p_int yours, mine; // Both members are pointers to integer type
size_t
& int
具有不同的类型,其中整数指针plength
只能指向整数成员的地址而不能指向其他成员。