gpt4 book ai didi

c - 二维字符数组的 sizeof() 显示错误的 ip

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:07 25 4
gpt4 key购买 nike

如果没有从主函数传递单词数组的大小,这个程序只显示一个输出“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com