C++数组和指针

先看以下一段代码:

#include <iostream>
#include<stdio.h>
#include<string>
using namespace std;

int main() {
	int time[] = {1,2,3};
	int *q ;
	q = time;
	cout<<*q<<" "<<q<<endl;
	char arr[]="hello world";
	string *p;
	string str[] = {"linux","unix"};
	p = str;
	cout<<*p<<" "<<p<<endl;
	char* pc;
	pc = arr;
	cout<<arr<<" "<<*pc<<endl;
	cout<<pc<<endl;
	string s = "linux";
	string *ps;
	ps = &s;
	cout<<ps<<*ps<<endl;

	return 0;
}


 

以下是执行结果:

1 0x7fff6de21a20
linux 0x7fff6de21a00
hello world h
hello world
0x7fff6de219f0 linux
解释:

一直以来都对指针有点疑惑.所以没事的时候就专门写了这段代码,代码不难.却对我认识指针和数据有很大的帮助.

样例中的time,str和s的全部的输出,依据书中的描写,就非常easy推断出来输出的数据.唯一让我困惑的就是char*和char[].

在c和c++中假设直接赋值char* p="hello world",是相当于char arr[]="hello world"; p = arr的,"hello world"是在内在的文字常量区,所以直接输出p的结果是hello world





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值