natstd
29-01-2003, 00:13
Có phải khi khai báo là: const int i ( ví dụ ) thì sẽ có 1 storage trong bộ nhớ được dành riêng đề chứa i không ?
Giả sử em lại dùng 1 pointer (goi la ip) để chỉ vào ô nhớ đấy, rồi thay đổi giá trị chứa trong nó( compiler khong generate error nao ) . tại sao khi kiểm tra giá trị i thì giá trị của i không hề thay đổi . Trong khi đó *ip thì đã được thay đổi. Nhưng ip va &i dều chỉ cùng vào 1 storage trong mem cả !!!!
Hay là cái doan code sau của em có lỗi :
#include<iostream>
using namespace std;
int main(){
const int i=10;
int* ip=const_cast<int*>(&i);
*ip=100;
cout << "ip="<<ip<<"; &i "<<&i ; //addr giong nhau
cout << "*ip= "<<*ip <<"; i= " <<i;
/* ket qua in ra la ip=100 nhung i van la 10 ; */
}
Mong các bác chỉ bảo giúp !
Giả sử em lại dùng 1 pointer (goi la ip) để chỉ vào ô nhớ đấy, rồi thay đổi giá trị chứa trong nó( compiler khong generate error nao ) . tại sao khi kiểm tra giá trị i thì giá trị của i không hề thay đổi . Trong khi đó *ip thì đã được thay đổi. Nhưng ip va &i dều chỉ cùng vào 1 storage trong mem cả !!!!
Hay là cái doan code sau của em có lỗi :
#include<iostream>
using namespace std;
int main(){
const int i=10;
int* ip=const_cast<int*>(&i);
*ip=100;
cout << "ip="<<ip<<"; &i "<<&i ; //addr giong nhau
cout << "*ip= "<<*ip <<"; i= " <<i;
/* ket qua in ra la ip=100 nhung i van la 10 ; */
}
Mong các bác chỉ bảo giúp !