当前位置: 代码迷 >> C语言 >> 指针问题
  详细解决方案

指针问题

热度:63   发布时间:2007-03-17 15:35:54.0
指针问题
#include "stdio.h"
void main()
{ int a[3][4]={0,1,2,3,4,5,6,7,8,10,11};
int *p;
p=a[0]; //这里替换为p=a就报错了,
printf("%d",a);
}

如果将其改为p=(int *)a;就没问题,这是何由?

[此贴子已经被作者于2007-3-17 17:16:49编辑过]

搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------

我的编译器三个都没报错,都得到了一个-82的值,但是那个错误应该由于两边的变量类型不相同早成的!两边都为指针类型就可以了!


----------------解决方案--------------------------------------------------------
我得到的值是2359104,可能机子不一样,结果也不一样
----------------解决方案--------------------------------------------------------
唉,我的编译器高级点,会报错
----------------解决方案--------------------------------------------------------

你们有没有把p=a[0]换成p=a; ???p=a[0]是没错的


----------------解决方案--------------------------------------------------------
有警告但是没错

printf("%d",a);这个是把a的地址转换成整数后打印了出来,
我的a的地址是 0022FF40转换后刚好是 2293568
由于机器不同,所以会显示不同的值
----------------解决方案--------------------------------------------------------
我的都没报错啊,就是不能得到想要的答案而已!
----------------解决方案--------------------------------------------------------
我也编拉一哈   没问题  结果4034
----------------解决方案--------------------------------------------------------
p=a[0]是二维数组的第一行的行向量的首地址
p=a是整个数组的首地址
输出结果不一样可能是因为大家机器的字长不一样
它就是把存放数据的地址的低8位或低16位换成十进制输出而已
----------------解决方案--------------------------------------------------------
问题已解决,二维数组中的A是一个行地址,只能赋值给行指针

有C++编译器的可以去运行这段代码就知道了

#include <iostream>
using namespace std;
void main()
{ int a[3][4]={0,1,2,3,4,5,6,7,8,10,11};
int *p;
p=a[0];
cout << typeid( a ).name() << endl; //下面分别为a,a[0] 的类型
cout << typeid( a[0] ).name() << endl;//
}//

[此贴子已经被作者于2007-3-18 12:30:05编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案