const相关内容
使用此代码,我遇到了细分错误: char* inputStr = "abcde"; *(inputStr+1)='f'; 如果代码是: const char* inputStr = "abcde"; *(inputStr+1)='f'; “分配只读位置"会出现编译错误. 但是,对于第一种情况,没有编译错误.只是分配操作实际发生时的细分错误. 有人可
..
typedef char* c; const c ptr1 = "pointer"; ++ptr1; /// error const char* ptr2 = "pointer"; ++ptr2; /// runs fine 现在ptr1应该是const char*类型,因此是非常量指针,那么为什么将其视为常量指针? 解决方案 它们不相同. 第一个表示一个指向const-char
..
这是代码: int main() { int* p = nullptr; const int* cp = p; const int*& ref = cp; const int*& ref0 = cp; const int*& ref1 = p;//not allowed const int*& ref2 = static_cast
..
所以本文正在讨论声明诸如const char* foo = "foo"之类的字符串文字的用法.它以声明结尾: const char *foo = "foo"; 几乎从来不是你想要的.而是,您要使用以下形式之一: 对于要导出的字符串: const char foo[] = "foo"; 对于要在同一源文件中使用的字符串: static const char foo[] = "
..
以下代码产生警告: const char * mystr = "\r\nHello"; void send_str(char * str); void main(void){ send_str(mystr); } void send_str(char * str){ // send it } 错误是: Warning [359] C:\main.c; 5.15 i
..
下面是一个代码片段,希望可以传达我正在尝试做的事情: void updatePointer(const int*& i) { i++; } int main() { int array[5]; int* arrayPtr = array; updatePointer(arrayPtr ); return 0; } 这会导致编译器错误: prog.cpp:
..
如何在C ++中将char*转换为const char*?为什么程序1可以运行,但是程序2不能运行? 程序1(正在运行): char *s = "test string"; const char *tmp = s; printMe(tmp); void printMe(const char *&buf) { printf("Given Str = %s", buf); }
..
我无法为自己解释以下代码: double d = 100; double const d1 = 30; double* const p = &d; // Line 1 double* const p1 = &d1; // Line 2 在上面的代码中,Line 1可以,但是Line 2会产生错误: "error C2440: 'initializi
..
有人可以向我解释为什么此代码有效吗?我觉得编译器不应该允许我做我已经做过的事情(移动一个int指针指向const int),或者我至少希望编译器发出警告或出现段错误.更改常量值的想法似乎太错误了. 代码: #include using namespace std; struct test_struct { int i; const int j;
..
我最近在阅读有关const关键字在C中用作函数参数的信息,以及 切勿在函数原型中使用const来传递参数 价值.它没有任何意义,因此只是“噪音". 我使用这种方式,它对我有用,但是我不确定为什么这对于按值传递的参数来说是噪声而对按引用传递的参数来说不是噪声(更合适的是指针) C中的值,因为C中没有pass by value和pass by reference的概念).因此,通过这种解释,当
..
我正在尝试通过一些网络教程来学习C ++.我没有可用的编译器,否则我会尝试一下.我不确定const指针是什么意思.这是否仅表示它始终指向相同的内存地址?你为什么要这么做?以下代码合法吗? ... int * const aPointer = new int; ... //do something with aPointer delete aPointer; ... //do somethin
..
据我了解,C ++中的声明/初始化是带有“基本类型"的语句,后跟逗号分隔的声明符列表. 请考虑以下声明: int i = 0, *const p = &i; // Legal, the so-called base type is 'int'. // i is an int while p is a const pointer to
..
const void *和void *有什么区别?在什么情况下可以将void指针强制转换为const void指针? 解决方案 const void *指向不应修改的内存. A void *(非常量)指向可以修改的内存(但不能通过void *;您必须先进行转换). 使用memmove()时,源地址强制转换为const void *: void *memmove(void
..
下面的代码正在处理TYPE* const指针. struct D { void Check () { D* const p = new D; // 2nd test is "p = 0;" cout
..
我用gcc编写了一个C程序,它给了我非常出乎意料的输出.代码是: #include int main(){ const int x=10; int *p=&x; *p=11; printf("%d\n",*p); printf("%d",x); printf("\n%u\n",p); printf("%u", &x)
..
我很惊讶地发现这种“常量"性的“漏洞": #include class A { int r ; public: A():r(0){} void nonconst() { puts( "I am in ur nonconst method" ) ; r++; } } ; class B { A a ; A* aPtr ;
..
此处. 建议的重复并且当前给出的答案没有解决为什么前面给出的示例没有问题.主要是为什么不这样做: "const int ** is a pointer to const int *与int*" 不同 也申请: "const int * is a pointer to const int与int"不同 我正从不同的角度来研究它,希望能得到另外的解释. 带有示例的代码
..
我正在尝试使用指向作为const对象的int的指针来初始化constexpr声明.我还尝试使用非const类型的对象定义一个对象. 代码: #include int main() { constexpr int *np = nullptr; // np is a constant to int that points to null; int j = 0; co
..
可能重复: 声明指针;类型和名称之间的空格的左边还是右边的星号? 我一直想知道放置*和&的确切正确位置是什么.似乎C ++可以容忍这些标记的位置. 例如,我似乎在一个关键字的左侧和右侧或两个关键字的中间都放了指针和号,但令人困惑的是,有时它们似乎是同一回事,尤其是与const 一起使用时 void f1(structure_type const& parameter) void f2(
..
我的同事在他启发的问题上是0分,共2分( 1 , 2 ),所以我想我应该给他有机会赶上. 我们最近的分歧是关于在声明中放置"const"的样式问题. 他认为它应该在类型的前面或指针之后.理由是,这通常是其他所有人所做的,其他样式容易引起混淆.因此,指向常量int的指针和指向int的常量指针分别是: const int *i; int * const i; 但是,我
..