pointers相关内容
以下代码片段(正确)在 C 中给出警告,在 C++ 中给出错误(分别使用 gcc 和 g++,在 3.4.5 和 4.2.1 版本中测试;MSVC 似乎并不关心): char **a;const char** b = a; 我可以理解并接受这一点. 这个问题的 C++ 解决方案是将 b 更改为 const char * const *,这不允许重新分配指针并防止您规避 const-corre
..
将指向非常量的指针转换为指向常数的指针是合法的. 那么为什么将指向非const的指针转换为指向const的指针是不合法的呢? 例如,为什么下面的代码是非法的: char *s1 = 0;常量字符 *s2 = s1;//行...字符 *a[MAX];//又名字符 **const char **ps = a;//错误! 解决方案 来自标准: const char c = 'c';字
..
考虑以下程序: #include 结构 S {S (){}私人的:无效 *ptr = nullptr;std::string str = "";};int main(){} 当在 GCC 4.7.1 上使用 -Weffc++ 编译时,会吐出: 警告:“结构 S"具有指针数据成员 [-Weffc++]警告:但不会覆盖 'S(const S&)' [-Weffc++]警告:或 '
..
我需要知道,当调用 C++ 中的类方法时,隐式“this"指针是第一个参数还是最后一个参数.即:是先入栈还是最后入栈. 换句话说,我在问一个被调用的类方法是否被编译器认为是: int foo::bar(foo *const this, int arg1, int arg2);//或者:int foo::bar(int arg1, int arg2, foo *const this); 因
..
在解决了我的结构的其他问题后,我的推送按预期工作,但是我的弹出返回错误的地址,我不知道为什么 - QNode* const Q_Pop(Q* const pointerQ){...//空检查QNode* tempNode = 指针Q->front.next;指针Q->front.next = (tempNode->next);tempNode->next->prev = &(pointerQ->
..
我正在将应用程序从 x86 移植到 x64.我正在使用 Visual Studio 2009;大部分代码是 C++,有些部分是纯 C.编译到 x64 时不支持 __asm 关键字,并且我们的应用程序包含一些内联汇编程序.我没有写这段代码,所以我不知道 et 应该做什么: int CallStackSize() {双字帧;PDWORD pFrame;__asm{mov EAX, EBPmov 帧,
..
例如: void func1(){诠释 i = 123;func2(&i);}无效 func2(int *a){*a = 456;} 当func1调用func2时,一个指向局部变量的指针被传递给func2——指针指向堆栈.这对 C 的规则安全吗? 谢谢. 解决方案 i的作用域是func1,它比调用func2.所以绝对安全.
..
在编写一个从字符串中删除特定字符的简单函数时,我遇到了一个奇怪的问题: void str_remove_chars(char *str, char to_remove){if(str && to_remove){字符 *ptr = str;字符 *cur = str;while(*ptr != '\0'){if(*ptr != to_remove){如果(指针!= 当前){cur[0] = pt
..
拥有此代码: typedef volatile int COUNT;COUNT functionOne( COUNT *number );int functionTwo( int *number ); 我无法摆脱一些警告.. 我在 functionOne 原型中收到此警告 1 [警告] 类型限定符被忽略函数返回类型 我得到这个警告 2,无论我用 COUNT pointer 参
..
以下 C 代码段: [...]无效 f1(无效* a){printf("f(a) 地址 = %p \n",a);a = (void*)(int*)malloc(sizeof(int));printf("地址 = %p \n",a);*(int*)a = 3;printf("数据 = %d\n",*(int*)a);}无效 f(无效){无效* a1=NULL;printf("a1 地址 = %p
..
可以使用下面列出的方法(我知道)创建 C++ 中的对象: 个人 p; 或 人 p("foobar"); 或 Person * p = new Person(); 那么,为什么三星 Bada IDE 不允许我执行前两种方法?为什么我总是必须使用指针?我可以使用指针等等,只是我想知道样式背后的根本原因. 来自 Bada API 参考的示例代码. //创建标签标签 *pLabel =
..
我正在尝试实施缓冲区溢出攻击,我需要知道我试图溢出的缓冲区的地址. 使用 GDB 显示的地址与我刚刚在代码中显示的地址不同: 具体代码: #includeint main() {字符缓冲区[20];printf("%p\n", 缓冲区);//0xbffff320返回0;} 但是,如果我这样做,在 gdb 中: p &buffer 我得到:0xbffff330
..
我刚开始学习围棋,在学习切片技巧时,有几点非常令人困惑.谁能帮我澄清一下. 在给定的切片中切割元素 方法一: a = append(a[:i], a[j:]...) 但有一个注意事项,如果使用指针可能会导致内存泄漏,推荐的方法是 方法二: copy(a[i:], a[j:])对于 k, n := len(a)-j+i, len(a);k<n;k++ {a[k] = nil/
..
我希望我的班级拥有一个 v8::Context 和一个 v8::External 作为成员.因此,我认为我必须使用持久句柄. class ScriptHelper {上市:ScriptHelper(v8::Persistent 上下文) : 上下文(上下文) {//...}//...私人的:v8::Persistent语境;v8::Persis
..
我有一个函数 foo(int[] nums),我理解它本质上等同于 foo(int* nums).在 foo 内部,我需要将 nums 指向的数组的内容复制到 范围内声明的一些 int[10] 中富.我理解以下内容无效: void foo (int[] nums){myGlobalArray = *nums} 复制数组的正确方法是什么?我应该像这样使用 memcpy: void foo (i
..
我找到了解决方案,但它不在 Swift 中:Converting UIImageView to UIImage 我什至通过使用 UnsafeMutablePointed 尝试在 Swift 中实现它而变得流氓并且没有运气. 然而,指针在 Swift 中通常是不受欢迎的,如果有一个简单的单行解决方案就更好了! 示例代码: 让 test1:UIImageView = UIImage
..
处理这种情况的最干净的方法是什么: func a() string {/* 无所谓 */}b *string = &a() 这会产生错误: 不能取a()的地址 我的理解是,如果获取了地址,Go 会自动将局部变量提升到堆中.这里很清楚,要取返回值的地址.处理这个问题的惯用方法是什么? 解决方案 地址操作符返回一个指针,指向具有“家"的东西,例如.一个变量.您的代码中表达式的值
..
我的 testing.cpp 中有这个: 类补充{上市:虚拟 Supp* add(Supp& val) = 0;};类SubA:公共支持{上市:整数值;子A(int a){值 = 一个;}诠释 getVal(){返回值;}Supp* add(Supp& 值){子A&a = dynamic_cast(值);int tempVal = a.getVal();整数总和 = val + t
..
我对 C++ 有点陌生.我习惯用 Java 编程.这个特殊的问题给我带来了很大的问题,因为 C++ 在处理数组时不像 Java.在 C++ 中,数组只是指针. 但是为什么会出现这样的代码: #include #定义尺寸 3使用命名空间标准;无效 printArray(int*, int);int * getArray();整数 ctr = 0;int main() {i
..
可能重复: 通过 C 和 C++ 中的函数返回本地数据指针 我需要创建一个返回数组的不带参数的函数 我收到错误:“警告:函数返回局部变量的地址" 为了便于阅读,我的代码已经过简化 int * getNums(){整数 [8];数字 = {1,2,3,4,5,6,7,8};返回数字;} 我被引导明白,当函数结束时指针丢失了,但数组还会被发送吗?如果不是,那么在函数调用中返回这
..