C++指针用法和注意事项

1、可以通过指针保存一个变量的地址。例如我们定义变量a=10,然后可以定义一个指针p保存变量a的地址。

2、*p:解引用,找到p指向的地址代表的数。

比如说:

cout<
cout<<*p<

3、语法:数据类型 * 指针名

int * p=&a;

4、求指针占用的内存空间(32系统中占用4个字节,64位系统中占8个字节)

cout<<"sizeof(int *)="<

这里的int * 是数据类型,sizeof即计算该数据类型所占用的字节数。

比如sizeof(int);sizeof(float);

5、空指针,野指针

即int * p=NULL或者int * p=0x1100;

6、const修饰指针

const int * p=&a;

指针指向可以修改,但是指针指向的值不可以修改,即,int a=10;

第一种:const int* p = &a;,不能改成*p=20

C++指针用法和注意事项_第1张图片

第二种:int * const p;//指针指向的值可以修改,但是指针的指向不可以修改

C++指针用法和注意事项_第2张图片

第三种:const int * const p;//指针指向和指针指向的值都不可以修改

C++指针用法和注意事项_第3张图片

7、指针和数组

定义一个数组    int arr[10];

指针访问:int * p=arr

其中,数组名arr即为数组中的第一个元素的地址,即首地址,不需要&;

cout<<"第一个数“<<*p<

p++;//地址++

cout<<"第二个数“<<*p<

8、for循环输出数组

for(int i=0;i<10;i++)

{

cout<<*p<

9、指针和函数

函数回顾:

值传递中,形参改变不会影响实参,即如果函数中的形参num1和num2互换,不影响a,b。

地址传递:用指针实现地址传递时,形参会改变实参

#include
using namespace std;

void swap(int* p1, int* p2)
{
	int temp = *p1;
	*p1 = *p2;
	*p2 = temp;
}
int main()
{
	int a = 10;
	int b = 20;
	swap(&a, &b);//地址传递,传给p1,p2地址,*p1,*p2是对地址解引用
	cout << a << endl;//这里直接输出 a,b因为形参影响实参,原函数无返回值
	cout << b << endl;
	system("pause");
	return 0;
}

你可能感兴趣的:(c++,开发语言,数据结构)