您的位置:首页 > 职场人生

从华为的一道面试反映出自己的基础知识的不扎实

2005-03-09 23:40 375 查看
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.
看来在进一步学习之前,基础的学习还是不能放松的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: