c++之指针一


1初识指针:

(1)指针是一个变量, 存储的是变量的内存地址。首先我们熟悉一下常规变量的地址。

int main()
{
	int dounts = 6;
	double cups = 4.5;
	cout << dounts<<endl;
	cout << cups << endl;
	cout << &dounts<<endl; //&是一个取地址符
	cout <<&cups << endl;
	system("pause");
}

6
4.5
008FFD68
008FFD58
请按任意键继续. . .
发现两个变量地址相距16字节,可能是操作系统将两个变量没放在相邻的单元。


(2)前面抛砖引玉,下面来看看指针的原理:c++中声明数组,必须指定数组的长度因此数组长度在编译时就指定好了,这样程序在大多情况下都浪费了内存。OOP通过将这样的决策推迟到运行阶段进行,使程序更灵活。c++采用的方法是使用关键字new请求正确数量的内存以及使用指针来跟踪分配的内存的位置。


int main()
{
	int higgends = 6;
	int *pt = &higgends; //声明一个指针变量并把higgens变量地址给pt
	cout << "higgends=" << higgends<<endl;
	cout << "address of higgend=" << &higgends<<endl;
	cout << "value of *pt=" << *pt<<endl;
	cout << "value of pt=" << pt<<endl;//指针的值即为所指向变量的地址
	system("pause");
}
higgends=6
address of higgend=0102F79C
value of *pt=6
value of pt=0102F79C

(3)声明和初始化指针:

int main()
{
	int higgends = 6;
	int *pt = &higgends; //声明一个指针变量并把higgens变量地址给pt
	cout << "higgends=" << higgends;
	cout << "address of higgend=" << &higgends;
	cout << "value of *pt=" << *pt;
	cout << "value of pt=" << pt;//指针的值即为所指向变量的地址
	system("pause");
}
higgends=6
address of higgend=005DF710
value of *pt=6
value of pt=005DF710
请按任意键继续. . .

(4)指针的危险:野指针

c++创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储所指向数据的内存。


比如下面的232323并不知道在哪里,那fellow并没有被初始化,这个指针就叫野指针。

long *fellow;
*fellow = 232323;

(5)new来分配内存:

指针真正的用武之地是在程序运行阶段分配未命名的内存以存储值。

int main()
{
	int *pn = new int; //pt指向一个int型数据
	typename *pointername = new typename; //指针可以指向任何类型数据
 }
(6)delete来释放内存:
int *pn = new int;
	delete pn;
(7)new来创建动态数组:

int *pn = new int[10];

(8)关于数组与字符串的指针:
int main()
{
	short tell[10] = {1,2,3,4,5,6,7,8,9,4};
	cout << tell<<endl;
	cout << &tell<<endl;
	char flower[10] = "rose";
	cout << flower;
	system("pause");
}
004FFB58
004FFB58
rose请按任意键继续. . .

. .




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值