指向恒量的指针
指向常量的指针函数代码如下void showarray(const int a[] ,int n ){int iint * pp afor(i 0i n
指向常量的指针 函数代码如下
void showarray(const int a[] ,int n ) { int i; int * p; p = a; for(i = 0;i < n ;i++) { printf("%d -> %d\n",i+1,p[i]++); } }请问这段代码是否正确,为什么我在 DEV_C++上面可以正常运行?
但是在 C Primer plus 中说到:
const double locked[4] = {0.08,0.075,0.725,0.07 }; double * p; p = locked; //书中指出这一句是不和法的,只有非常量数据的地址才能赋给普通指针 C
[解决办法] 编译不过的应该更符合标准.
[解决办法] 可能标准不同
[解决办法] const double locked[4] = {0.08,0.075,0.725,0.07 };
只是说locked所指向内存内容只可读,至于locked,可以赋给普通指针。
[解决办法] 一般会过,但是编译器会发出警告,因为这样的用法是有隐患的。
引用: 函数代码如下 void showarray(const int a[] ,int n ) { int i; int * p; p = a; for(i = 0;i < n ;i++) { printf("%d -> %d\n",i+1,p[i]++); } } 请问这段代码是否正确,为什么我在 DEV_C++上面可以正常运行? 但是在 C Primer plus 中说到: const double locked[4] = {0.08,0.075,0.725,0.07 }; double * p; p = locked; //书中指出这一句是不和法的,只有非常量数据的地址才能赋给普通指针 [解决办法] C++ 错误。
……/main.cpp:11:9: error: invalid conversion from 'const int*' to 'int*' [-fpermissive]
C 警告,可能是为了照顾老代码,所以没设为错误。
……/main.c:9:7: warning: assignment discards 'const' qualifier from pointer target type [enabled by default]
楼主是哪个版的编译器?[解决办法] 不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!