pointers相关内容
..
可能重复: 声明指针;类型和名称之间的空格是在左边还是右边的星号? 我一直想知道放置 * 和 & 的确切位置是什么.似乎 C++ 对放置这些标记的位置非常宽容.例如,我似乎将指针和 & 号放在关键字的左右两侧或两个关键字的中间,但令人困惑的是,有时它们似乎意味着相同的东西,尤其是与 const void f1(structure_type const& 参数)void f2(结构类型常量
..
我必须继续一个程序.我之前的程序员使用的结构很多: std:vectorT* 常数> 他在 Visual Studio C++ 2010 中编写了 ist 并且能够编译它.我正在使用 g++,它会引发一些编译错误. g++ -g -Wall -c -std=c++11 -pedantic -I/usr/include/SuperLU/src/Cell.cpp -o obj/Cell.o在
..
我正在查看一些代码,但遇到了一些我不熟悉的代码.经过一番搜索,我想不出任何例子来说明为什么这样做或这个声明的好处. myClass const * const myPtr = myClass->getPointer(); 这是一个 const 指针的声明还是完全不同的东西? 解决方案 表示“myPtr is a const pointer to a const 我的类".这意味着你既不
..
有什么区别 void func(const Class *myClass) 和 void func(Class *const myClass) 另见: C++ 常量问题 有多少和哪些用途“常量"的在 C++ 中? 可能还有其他人...... 解决方案 区别在于 void func(const Class *myClass) 你指向一个你不能改变的类,因为它是常量.
..
我尝试编写自己的 strchr() 方法实现. 现在看起来像这样: char *mystrchr(const char *s, int c) {而 (*s != (char) c) {如果 (!*s++) {返回空值;}}返回 (char *)s;} 最后一行原来是 return s; 但这不起作用,因为 s 是 const.我发现需要这个演员表(char *),但老实说我不知道
..
..
据我了解,const 修饰符应该从右到左阅读.从那,我明白了: const char* 是一个指针,它的char元素不能修改,但指针本身可以,并且 char const* 是一个指向 mutable 字符的常量指针. 但我收到以下代码的以下错误: const char* x = new char[20];x = 新字符[30];//这如预期的那样有效x[0] = 'a';//按预期
..
我们编写了一个程序,通过它我们试图找到一个常量的地址.可以这样吗? 主包功能主要(){常数 k = 5地址 := &k} 它给出了一个错误,谁能告诉我们如何找到一个常量的地址? 解决方案 简而言之:你不能. 错误信息说: 不能取k的地址 地址运算符&的操作数有限制.规范:地址操作符: 对于T类型的操作数x,地址操作&x生成*T 到 x.操作数必须是可寻址,即变量
..
对于 C++ 新手来说,const 成员函数被允许在类引用的对象上调用非 const 方法(通过指针或引用)通常很困惑.例如,以下是完全正确的: class SomeClass{类 SomeClassImpl;SomeClassImpl * impl_;//PImpl 成语上市:无效 const_method() 常量;};结构 SomeClass::SomeClassImpl{void non
..
为什么我不能这样做: char* p = new char[10];无效 SetString(char * const str){p = str;}SetString("你好"); 我有一个指向 char 的 const 指针,为什么我不能将 const 指针分配给另一个指针? 这似乎不合逻辑,因为通过将其分配给另一个指针,您实际上并没有违反 char 指针的 const-ness.还是
..
为什么下面的 C 代码可以工作? const char* str = NULL;str = "测试";str = "test2"; 既然 str 是一个指向常量字符的指针,为什么我们可以给它分配不同的字符串字面量呢?此外,我们如何保护 str 不被修改?例如,如果我们稍后将 str 分配给一个更长的字符串,该字符串最终会覆盖另一部分内存,这似乎是一个问题. 我应该在我的测试中补充一点,我
..
..
变量 i 被声明为 const 但我仍然可以使用指向它的内存位置的指针来更改值.怎么可能? int main(){常量 int i = 11;int *ip = &i;*ip=100;printf("%d\n",*ip);printf("%d\n",i);} 当我编译时,我得到这个警告: test.c:在函数“main"中:test.c:11:警告:初始化从指针目标类型中丢弃限定符 输出是
..
..
首先,示例代码: 案例一: typedef char* 字符;typedef CHARS 常量 CPTR;//指向字符的常量指针 文字替换 CHARS 变为: typedef char* 常量 CPTR;//仍然是一个指向字符的常量指针 案例 2: typedef char* 字符;typedef 常量字符 CPTR;//指向字符的常量指针 文字替换 CHARS 变为: typ
..
考虑以下程序: int main(){整数数组[9];常量 int (*p2)[9] = &array;} 它在 C++ 中编译良好(参见现场演示 这里)但在 C 中编译失败.默认情况下,GCC 提供以下警告.(查看现场演示这里). prog.c:在函数'main'中:prog.c:4:26:警告:从不兼容的指针类型初始化 [默认启用]常量 int (*p2)[9] = &array; 但
..
有什么区别 char* 名称 指向一个常量字符串字面量,而 const char* 名称 解决方案 char* 是一个 mutable 指针,指向一个 mutable 字符/字符串. const char* 是一个 mutable 指针,指向一个 immutable 字符/字符串.您不能更改此指针指向的位置的内容.此外,当您尝试这样做时,编译器需要提供错误消息.出于同样的原因,不推
..
我想用指针改变一个常量的值. 考虑下面的代码 int main(){常量 int const_val = 10;int *ptr_to_const = &const_val;printf("常量的值为 %d",const_val);*ptr_to_const = 20;printf("常量的值为 %d",const_val);返回0;} 正如预期的那样,常量的值被修改了. 但是当我
..
我知道它提高了可读性并减少了程序出错的可能性,但是它对性能的提高有多大? 顺便说一句,引用和 const 指针之间的主要区别是什么?我会假设它们以不同的方式存储在内存中,但如何呢? 解决方案 [编辑:好的,所以这个问题比我一开始想的要微妙.] 声明指向 const 的指针或引用的 const 永远不会帮助任何编译器优化任何东西.(尽管请参阅此答案底部的更新.) const
..