十天一刻 发表于 2016-3-10 13:29:57

新手求助

#include<iostream>
using namespace std;
int main()
{
        int x={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,也就是1

n0noper 发表于 2016-3-10 17:00:08

指针变量,内存中装的是地址.

举例说明:
        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(1),这个类型都不一样,肯定没法比较。

如果还不理解,可以单独QQ上聊一下,给你录个视频,指针部分文字还是比较抽象的。

十天一刻 发表于 2016-3-12 11:35:08

n0noper 发表于 2016-3-10 17:00
指针变量,内存中装的是地址.

举例说明:


不懂{:10_243:}。
*k不应该是指针吗?*k=x;是不是代表指针k=x?
还有什么是**s,可以详细解说一下吗?

十天一刻 发表于 2016-3-12 11:35:42

n0noper 发表于 2016-3-10 17:00
指针变量,内存中装的是地址.

举例说明:


不懂
*k不应该是指针吗?*k=x;是不是代表指针k=x?
还有什么是**s,可以详细解说一下吗?

十天一刻 发表于 2016-3-12 11:37:18

十天一刻 发表于 2016-3-12 11:35
不懂
*k不应该是指针吗?*k=x;是不是代表指针k=x?
还有什么是**s,可以详细解说一下吗?

2244894846@qq.com    可以求一下您的解析视频吗?{:5_93:}
页: [1]
查看完整版本: 新手求助