char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么?
当开始看这道题的时候认为是正确的,当时我是这样想的:a[16][8]是个二维数组,那么a[16]不就是数组的一级指针,那么a就是数组的二级指针.这样p=a就理所当然了.但是我错了,因为基础的不扎实我忽略了二维数组的存放方式,其实二维数组在内存中是以一维数组的形式存放的.a其实就是个简单的一级指针
为了证实我写了下面的简单的程序测试了一下
void Test(char **p);
int main(void)
{
char a[10][8];
void Test(a);
return 0;
}
void Test(char **p)
{
}
编译结果是'Test' : illegal use of type 'void'
C:/Documents and Settings/libing/桌面/sasa/sa.cpp(8) : error C2440: 'initializing' : cannot convert from 'char [10][8]' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Error executing cl.exe.
看来在进一步学习之前,基础的学习还是不能放松的