指针
int n=4;
int *p=&n;
cout<<p<<endl;//p是地址;
cout<<p+1<<endl;//加一仍是地址
cout<<*p<<endl;;//*p是值
*p+=1;
cout<<*p<<endl;//输出5
cout<<n;//输出5
return 0;
1、常量指针和指针常量
常量指针 :指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换 (int const *p=&a;) const修饰的是*p,则值不变,可以指向另一个与原指针相等的变量
指针常量 :指向的地址不可以重新赋值,但内容(值)可以改变,必须初始化,地址跟随一生
变量类型转化 (int * const p=&a;) const修饰的是p,则地址不变
2、空指针
指针变量指向内存编号为0的空间(内存编号0~255为系统所占用的内存,不允许用户访问)
Int *p=NULL;
Cout<<*p<<endl;//该语句错误,不可访问
3、 指针访问数组中的值
void print (int arr[] , int size)
{
int *p=arr;//数组名实际是指向数组第一个元素的指针
for(int i=0;i<9;i++)
{
cout<<*p<<endl;
p++;
}
}
函数 void print(values[],int size) //实际向函数传递了数组首地址,告诉函数数组从何开始,和变量size则告诉函数数组在何处结束。
等价于 void print(int *p , int size)
默认情况下,32位的操作系统中,指针所占字节为4,64位操作系统则是8.
目录