|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream>
using namespace std;
int main()
{
int x[6]={1,3,5,7,9,11},*k,**s;
k=x;
s=&k;
cout<<*(k++)<<","<<**s<<endl;
return 0;
}
1.求解释
2.k=x与*k=x 有什么不同、还有这时的X是否=x[0],也就是1
指针变量,内存中装的是地址.
举例说明:
x是一个数组名,类型为int[],指向地址0x00001000;
内存中,地址0x00001000处连续存放着1,3,...
指针变量:
k类型为int*,存放的是一个地址。(假设k所在的内存地址为x011111111)
k = x; 操作之后,k中存放的数据为0x00001000;
s类型为int**,存放的是一个地址。
s = &k; 操作之后,s中存放的数据为0x11111111(即,k的地址)
如你所说,
k = x; 就是把k的内存值修改为x指向的数组首地址(0x00001000);
*k = x; 这个操作是非法的,因为你把一个int[]类型赋值给int*类型,编译器会报错。
x(0x00001000)是否等于x[0](1),这个类型都不一样,肯定没法比较。
如果还不理解,可以单独QQ上聊一下,给你录个视频,指针部分文字还是比较抽象的。
|
|