Tag: 指针

Python中的指针?

我知道Python没有指针,但有没有办法让这个产量2代替 >>> a = 1 >>> b = a # modify this line somehow so that b "points to" a >>> a = 2 >>> b 1 ? 这里有一个例子:我想form.data['field']和form.field.value始终具有相同的值。 这不是完全必要的,但我认为这将是很好的。

指向引用的指针和引用指针之间的区别

指向引用的指针,指向C ++指针的指针和指针有什么区别? 在哪里应该比另一个更受欢迎?

如何增加指针地址和指针的值?

让我们假设, int *p; int a = 100; p = &a; 下面的代码将会做什么以及如何做? p++; ++p; ++*p; ++(*p); ++*(p); *p++; (*p)++; *(p)++; *++p; *(++p); 我知道,在编码方面这是一团糟,但我想知道当我们这样编码时会发生什么。 注意:假设a=5120300的地址存储在地址为3560200指针p 。 现在,在执行每个陈述之后, p & a的价值是多less?

char *和const char *之间的区别?

有什么区别 char* name 它指向一个常量string,和 const char* name

修改一个char * conststring

我知道const char *是一个指向const char *的指针,而char *const是一个指向char的常量指针。 我正在testing下面的代码: const char *s = "hello"; // Not permitted to modify the string "hello" char *const t = "world"; // Not permitted to modify the pointer t s = "hello2"; // Valid // t = "world2"; // Invalid, gives compilation error // *(s + 1) = 'a'; // Invalid, […]

将二维数组传递给常量参数的函数

我从C Primer Plus了解到,如果要保护数组不被函数意外修改,则应在函数定义头部的指针声明之前添加const修饰符。 遵循这个明智的build议,在下面的最小的例子中,我试图将一个非常量的二维数组array传递给Sum2D函数,其中的一个参数是一个pointer-to-const-int[2]的pointer-to-const-int[2] 。 #include <stdio.h> #define ROWS 2 #define COLS 2 int Sum2D(const int ar[][COLS], int rows); //use `const` to protect input array int main(void) { int array[ROWS][COLS]={{1,2},{3,4}}; //the non-constant array printf( "%d\n", Sum2D(array,ROWS) ); return 0; } int Sum2D(const int ar[][COLS], int rows) { int total=0; int i,j; for( i=0 ; i<rows […]

存储无效指针是否自动未定义行为?

显然,解引用无效指针会导致未定义的行为。 但是如何简单地存储一个无效的内存地址在指针variables? 考虑下面的代码: const char* str = "abcdef"; const char* begin = str; if (begin – 1 < str) { /* … do something … */ } expression式begin – 1评估为无效的内存地址。 请注意,我们实际上并没有取消引用这个地址 – 我们只是在指针运算中使用它来testing它是否有效。 尽pipe如此,我们仍然需要将一个无效的内存地址加载到一个寄存器中。 那么,这是不确定的行为? 我从来没有想过,因为很多指针算术似乎都依赖于这种事情,而指针实际上只不过是一个整数。 但是最近我听说,即使将一个无效指针加载到寄存器中的行为也是未定义的行为,因为某些体系结构会自动抛出总线错误,或者如果这样做。 任何人都可以指向我的C或C ++标准的相关部分来解决这个问题吗?

C ++:将指针强制转换为int并返回到指针是否安全?

将指针强制转换为int并返回到指针是否安全? 如果我们知道指针的长度是32位还是int长度是32位呢? long* juggle(long* p) { static_assert(sizeof(long*) == sizeof(int)); int v = reinterpret_cast<int>(p); // or if sizeof(*)==8 choose long here do_some_math(v); // prevent compiler from optimizing return reinterpret_cast<long*>(v); } int main() { long* stuff = new long(42); long* ffuts = juggle(stuff); std::cout << "Is this always 42? " << *ffuts << std::endl; } 这是由标准覆盖?

NULL总是假?

假设在C中NULL总是转化为假是否安全? void *somePtr = NULL; if (!somePtr) { /* This will always be executed? */ } 或者应该显式检查NULL的值吗?

当你在C ++中释放两次或更多的指针时会发生什么?

int main(){ Employee *e = new Employee(); delete e; delete e; … delete e; return 0; }