如果没有从主函数传递单词数组的大小,这个程序只显示一个输出“Hiii”。
如果在 disp
函数中生成大小显示
尺码:48
尺码:2
嗨
如果大小是从 main
函数中传递的显示
尺码:48
尺码:48
嗨
你好
你好
Hello World
#include<stdio.h>
#include<conio.h>
void disp(char words[][12],int size)
{
int i,j;
char *p,*cp;
p=words;
size=sizeof(words);
printf("Size %d\n",size);
for(cp=p;cp<(p+size);cp+=12)
{
printf("%s",cp);
printf("\n");
}
}
void main()
{
char words[][12]={"Hiii","Hello","Hello There","Hello World"};
int size;
clrscr();
size=sizeof(words);
printf("Size %d\n",size);
disp(words,size);
getch();
}
在 Borland Turbo C 中编译的程序
最佳答案
在 C 中,传递数组的语法实际上只是传递指针的另一种说法。例如:
void f(int a[])
只是另一种说法
void f(int *a)
这是语言中的一种特殊语法,旨在使参数更加 self 记录,但在您所描述的情况下也可能会造成混淆。
在你的例子中,声明:
void disp(char words[][12],int size)
实际上是在说
void disp(char (*words)[12],int size)
也就是说,words 是一个指向 12 个字符数组的指针。在你的例子中,指针的大小是两个字节。
关于c - 二维字符数组的 sizeof() 显示错误的 ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9781002/