我碰到这个奇怪的代码片段编译罚款: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } 为什么 C ++有这个指向类的非静态数据成员的指针? 这个奇怪的指针在真正的代码中有什么用?
好的,所以最后一次我写C ++为生, std::auto_ptr是所有的std lib都可用的,而boost::shared_ptr是所有的愤怒。 我从来没有真正看过其他提供的智能指针types提升。 我明白,C ++ 11现在提供了一些types的提升,但不是全部。 那么有人有一个简单的algorithm来确定何时使用哪个智能指针? 优选地包括关于哑指针(诸如T*原始指针)和其余的升压智能指针的build议。 (这样的事情会很棒)。
我们现在拥有许多新function的C ++ 11。 一个有趣和令人困惑的(至less对我来说)是新的nullptr 。 好了,再也不需要讨厌的macrosNULL 。 int* x = nullptr; myclass* obj = nullptr; 不过,我没有得到如何nullptr作品。 例如, 维基百科文章说: C ++ 11通过引入一个新的关键字来作为一个可区分的空指针常量来纠正这个问题:nullptr。 它的types是nullptr_t ,它可以隐式转换,并且可以和任何指针types或成员指针types进行比较。 除了bool之外,它不是可以转换的,也不可以与整数types相比较。 它是怎样的一个关键字和一个types的实例? 另外,你是否还有另外一个例子(维基百科之外), nullptr优于0 ?
在C编程中,你可以传递任何types的指针作为自由参数,它如何知道分配内存的大小以释放? 每当我传递一个函数的指针,我也必须通过大小(即10个元素的数组需要接收10作为参数来知道数组的大小),但我不必传递的大小免费function。 为什么不,我可以在自己的函数中使用这种相同的技术,以免我需要在数组长度的额外variables之间进行购物。
我对C来说比较新,我需要一些处理数组的方法。 来自Java编程,我习惯于能够说int [] method()为了返回一个数组。 不过,我发现用C语言你必须在返回数组时使用指针。 作为一个新的程序员,我真的不明白这一点,即使我看过很多论坛。 基本上,我试图编写一个返回在C中的字符数组的方法。我将提供一个数组的方法(让我们调用它的returnArray)。 它将从前面的数组中创build一个新的数组,并返回一个指向它的指针。 我只是需要一些帮助,如何获得这个开始,以及如何读取指针,一旦它被发送出arrays。 任何帮助解释这一点表示赞赏。 数组返回函数的build议代码格式 char *returnArray(char array []){ char returned [10]; //methods to pull values from array, interpret them, and then create new array return &(returned[0]); //is this correct? } 函数的调用者 int main(){ int i=0; char array []={1,0,0,0,0,1,1}; char arrayCount=0; char* returnedArray = returnArray(&arrayCount); ///is this correct? for […]
我应该使用哪种格式说明符来打印variables的地址? 我很困惑下面的很多。 %u – 无符号整数 %x – hex值 %p – void指针 这将是打印地址的最佳格式?
下面的问题: 一个数组的地址是如何等于它在C中的值? #include <stdio.h> #define N 10 char str2[N]={"Hello"}; int main(){ printf("sizeof(str2): %d bytes\n", sizeof(str2)); printf("sizeof(&str2): %d bytes\n", sizeof(&str2)); return 0; } 输出: sizeof(str2): 10 bytes sizeof(&str2): 4 bytes 我知道str2本身就是str2中第一个元素的地址。 而当str2是sizeof的参数时,它将返回整个数组str2的大小。 另外, &str2也是arr str2第一个元素的地址,但是来自于不同types( char (*)[N] ==指向数组的指针)。 但是当&str2是一个sizeof的参数时, &str2如何performance的?
请附上解释的例子。
考虑: char amessage[] = "now is the time"; char *pmessage = "now is the time"; 我从“C语言程序devise语言 ”第2版上看到,上面的两个语句并没有做同样的事情。 我一直认为数组是处理指针来存储某些数据的一种方便的方式,但显然不是这种情况… C中数组和指针之间的“非平凡”差异是什么?
我已经写了一个简单的,工作的俄罗斯方块游戏与每个块作为一个类的单个块的一个实例。 class SingleBlock { public: SingleBlock(int, int); ~SingleBlock(); int x; int y; SingleBlock *next; }; class MultiBlock { public: MultiBlock(int, int); SingleBlock *c, *d, *e, *f; }; SingleBlock::SingleBlock(int a, int b) { x = a; y = b; } SingleBlock::~SingleBlock() { x = 222; } MultiBlock::MultiBlock(int a, int b) { c = new SingleBlock (a,b); […]