c++指针笔记一
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++指针笔记一,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2505字,纯文字阅读大概需要4分钟。
内容图文
![c++指针笔记一](/upload/InfoBanner/zyjiaocheng/1296/6ba3dd3715f746cfa1089d679facdab8.jpg)
左值和右值的区别:
左值就是在赋值中可以放在赋值操作符两边的值,比如:
int a = 1;
double b = 2.0
a = b;
b = a;
这里a和b都是左值,一切变量都是左值,但const量是例外。
而右值则是只可以放在赋值操作符右边的值,比如:
int a = 0;
char *b = "hello";
3 = a; // ERROR
"howdy" = b // ERROR
这里3和"howdy"都是右值,所以不能放在赋值操作符左边,一切常数、字符和字符串都是右值。
指针变量的声明与初始化
1.指针包含的是包含特定值的变量内存地址,变量名直接引用数值,而指针是在间接引用数值。
2.值为0或null的指针称为空指针。
3.声明方式为:int *Ptr;
4.指针运算符为&:
int y=5; int *yPtr; yPtr=&y;
以上语句表示,将变量y的地址赋值给指针yPtr,或者也可以说让指针yPtr指向变量y
5.运算符的应用:
#include<iostream>
using namespace std;
int main(){
int a;
int *aPtr;
a=7;
aPtr=&a;
cout<<"The address of a is "<<&a<<endl;
cout<<"The value of aPtr is "<<aPtr<<endl;
cout<<endl;
cout<<"The value of a is "<<a<<endl;
cout<<"The value of *aPtr is "<<*aPtr<<endl;
cout<<endl;
cout<<"Showing that * and & are inverses of each other."<<endl;
cout<<"&*aPtr = "<<&*aPtr<<endl;
cout<<"*&aPtr = "<<*&aPtr<<endl;
return 0;
}
6.函数按值传递和按指针传递参数
按数值传递
int cuberByValue(int );
int main(){
int number=5;
cout<<"The original value of number is "<<number<<endl;
number = cuberByValue(number);
cout<<"The new value of number is "<<number<<endl;
return 0;
}
int cuberByValue(int number){
return number*number*number;
}
按引用传递
void cuberByReference(int *);
int main(){
int number=5;
cout<<"The original value of number is "<<number<<endl;
cuberByReference(&number);
cout<<"The new value of number is "<<number<<endl;
return 0;
}
void cuberByReference(int *nPtr){
*nPtr=*nPtr* *nPtr* *nPtr;
}
7.const修饰指针
a.指向非常量数据的非常量指针:权限最大,如int *aPtr;
b.指向常量数据的非常量指针:即你可以改变指针的指向方向,但不能通过指针修改数据。
比如改变指针的指向:
int main(){
const int *aPtr;
int x=4,y=5;
aPtr=&x;
cout<<"指向变量x时指针的值: "<<*aPtr<<endl;
aPtr=&y;
cout<<"指向变量y时指针的值:"<<*aPtr<<endl;
return 0;
}
这样的操作是允许的
但通过指针修改数据:
int main(){
const int *aPtr;
int x=5;
aPtr=&x;
cout<<*aPtr<<endl;
x=6;//允许修改数据
cout<<*aPtr<<endl;
*aPtr=100;//不允许
return 0;
}
c.指向非常量的常量指针:即可以通过指针修改数据,但不能改变指针的指向。
int main(){
int x=5;
int * const aPtr=&x;
cout<<*aPtr<<endl;
*aPtr=6;//允许修改数据
cout<<x<<endl;
int y=7;
aPtr=&y;//不允许修改指向
return 0;
}
d.指向常量数据的常量指针:权限最小,既不允许修改指针方向,也不能通过指针修改数据;
int main(){
int x,y=5;
const int * const aPtr=&x;
cout<<*aPtr<<endl;
*aPtr=6;//不允许修改数据
aPtr=&y;//不允许修改指向
return 0;
}
原文:http://www.cnblogs.com/xy95/p/5816512.html
内容总结
以上是互联网集市为您收集整理的c++指针笔记一全部内容,希望文章能够帮你解决c++指针笔记一所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。