C语言怎么用指针输出二维字符数组

C Code:

#include "stdafx.h"

char* fun1()
{
char nums[10][3]={"","一","二","三","四","五","六","七","八","九"};
return (char*)&nums;
}
void fun2(char* str)
{

printf("\n=======================");
for(int i=1;i<=10;i++,str++)
{
printf("%s",*str);
}
printf("\n=======================");
}

int _tmain(int argc, _TCHAR* argv[])
{
char *str=fun1();
fun2(str);
getchar();
return 0;
}

这个fun2()要怎么样才可以输出那个nums[10][3]中的内容, 高手指点下,谢谢

第1个回答  2011-08-22
你这样是不能的,因为:
1.在fun1里面声明的局部变量到fun1函数结束的时候就没有了,变量的作用域不够。这一点就决定了你不可能在fun2中输出nums[10][3]中的内容。你可以在fun1中动态申请内存,或者在外部声明成全局变量。
2.指针用的不对,你要用的是一个字符指针,fun1返回的是一个字符串的指针的指针。在上面的声明之后,可以用循环来输出追问

是不能,那个变量作用不够,那要把nums[10][3]作为全局变量,
指针这块我刚接触,多多指教,
可以帮我改下吗

第2个回答  2011-08-22
#include "stdafx.h"
char nums[10][4]={"","一","二","三","四","五","六","七","八","九"};//为了字节对齐,定义为4,3的话中文会乱码

char** fun1()
{
//char nums[10][4]={"","一","二","三","四","五","六","七","八","九"};
//在函数中定义字符串数组,函数结束时,栈会释放掉,为了测试只好放到全局
return (char **)nums;
}
void fun2(char** str)
{

printf("\n=======================\n");
for(int i=1;i<=10;i++,str++)
{
printf("%s",str);
}
printf("\n=======================");
}

int main()
{
char **str=fun1();
fun2(str);
getchar();
return 0;
}本回答被提问者采纳
第3个回答  2020-02-29
这个涉及到汉字的区位码、国标码和机器码表示。。如果有一些实例你最好去看看。。
第4个回答  2011-08-22
return (char*)&nums; 改成 return nums; 应该就行了
相似回答