带你学C_E29遇到的问题
本帖最后由 就是杨小叨 于 2017-2-27 14:21 编辑#include <stdio.h>
void get_array(int b);
void get_array(int b)
{
int i;
printf("sizeof b: %d\n", sizeof(b));
}
int main()
{
int a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
printf("sizeof a: %d\n", sizeof(a));
get_array(a);
return 0;
}
运行后 a=40;b=8???
为什么b=8呢? 我想应该是b接收的a的地址,作为整型保存,sizeof输出的一个整型的大小(ps我的编译器是4) 本帖最后由 kai759630 于 2017-3-9 16:30 编辑
应该是编译器版本不一样吧,这里的实参数组a是被当做一个地址(事实上是数组的第一个 元素a的地址)传进get_array()函数了,所以大小只是一个数组元素的大小,要知道实际参数可以是常量,变量或表达式的,要是还不清楚可以去看下函数调用一节。{:5_108:}
#include <stdio.h>
void get_array(int *b);
void get_array(int *b)
{
printf("sizeof b: %d\n", sizeof(b));
}
int main()
{
int a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
printf("sizeof a: %d\n", sizeof(a));
get_array(a);
return 0;
}
其实直接用上面指针也是可以的。 我在想要是想将数组整个大小传进去该怎么弄呢?还是办不到?@人造人 kai759630 发表于 2017-3-9 16:32
我在想要是想将数组整个大小传进去该怎么弄呢?还是办不到?@人造人
把数组装进结构体
#include <stdio.h>
struct Str
{
char str;
};
void fun(struct Str S)
{
printf("sizeof:%d\n", sizeof(S));
}
int main(void)
{
struct Str S = {"test"};
fun(S);
return 0;
} 人造人 发表于 2017-3-9 17:20
把数组装进结构体
好主意{:10_279:} #include <stdio.h>
void get_array(int b);
void get_array(int b)
{
int i;
int c;
for(i = 0; i < 10; i++)
{
c = b;
}
printf("sizeof b: %d\n", sizeof(c));
}
int main()
{
int a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
printf("sizeof a: %d\n", sizeof(a));
get_array(a);
return 0;
}
弄个临时数组就可以了,但是感觉还是弄到结构体里比较好!
页:
[1]