C++指针,引用和const的学习经验
很久没有看C++了,一直在忙导师的一个项目,终于在一个通宵之后完成了这个学期的主要任务!导师的项目是考试院里的一个项目,很重要,关系到研究生和博士生录取和分数等工作。所以我还是可以看到一些机密信息的
O(∩_∩)O~。
1.指针和const
指针指向 某一数据类型的变量的地址,比如 int * ipt;
int age=10;
int * ipt=&age;
那么*ipt 和age的值相等,&age,ipt指向的内存地址也相等。
在指针函数中,如 int dosmth (int *a, int *b);
void dosmth (int *a, int *b)
{
*a+=10;
* b=10;
}
在调用这个函数以后,dosmth(&ix,&iy);那么ix iy的值就会发生改变
也就是说在函数int dosmth (int *a, int *b)中改变了他们的值。
如果只想显示结果,不允许函数修改指针所指向的地址中的内容
那么就得用下面这个函数
void doth(const int *ipa,const int *ipb)
{
cout<<*ipa+*ipb;
/* 如果尝试修改 ipa,ipb所指向的内容,那么会出现错误*/]
*ipa=10+*iptb; //error
}
2.指针指向哪里?
例如 char *pch="lovestanford";
那么 *pch等于 l;
*"lovestanford"==l /true
输出字符
while(pch)
{
cout<<*pch;
pch++;
}
数组或者字符串数组的名字指向的就是数组的第一个元素的地址
void displaychar(char * pch)
{
while(*pch)
{
//code block
pch++;
}
}
char name="lovestanford";
displaychar(name);
3.const
const int *p; 那么意味着不允许通过 *p来修改它所指向的内容的值
int const *p; 一旦赋值后就不能修改它所指向的地址
int a=10,b=20;
const int *p=&a;
*p=30 ;//error
p=&b;// ok
int const *q=&b;
*q=123; //ok
q=&a; //error
4.C++引用
int age=99;
int &pt=age;
那么age pt的值 和内存单元相等
age==pt;
&age==&pt;
void ref_do(int &ia)
{
ia+=10;// 修改了
}
int age=10;
cout<
ref_do(age);
cout<
void ref_did(const int & ib)
{
ib+=10; //error
cout<
}
cout<
ref_did(age) ;// 20
阅读(1226) | 评论(0) | 转发(0) |