首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

只有数组首地址,打印所有元素,该如何解决

2012-04-19 
只有数组首地址,打印所有元素比如 int a[]只有a的地址,能不能打印所有a 的元素能不能实现?[解决办法]void

只有数组首地址,打印所有元素
比如 int a[]
只有a的地址,能不能打印所有a 的元素
能不能实现?

[解决办法]
void print()
{
int a[] ={1,2,3,4};
for(int i=0;i<sizeof(a)/sizeof(int);i++)
printf("%d",a[i]);
 
}

[解决办法]

探讨

对,如果,不知道数组元素类型的话,就不太好搞了。。。

[解决办法]
探讨

对,如果,不知道数组元素类型的话,就不太好搞了。。。

[解决办法]
探讨

void print()
{
int a[] ={1,2,3,4};
for(int i=0;i<sizeof(a)/sizeof(int);i++)
printf("%d",a[i]);
 
}

[解决办法]
只知道数组地址----意味着不知道元素个数(参数传递只传地址),不知道元素类型(void*传递)----无法打印:循环无法控制+输出格式无法控制。
1楼的例子(在定义域内的数组,及扩展的“动态数组”)不存在上面两个“不知道”
[解决办法]
探讨
引用:
void print()
{
int a[] ={1,2,3,4};
for(int i=0;i<sizeof(a)/sizeof(int);i++)
printf("%d",a[i]);
 
}

偶,对呀,这个没想到啊

[解决办法]
呃···我感觉我在写代码的时候sizeof(a) / aizeof(int)还是蛮常用的,因为有时候初始化一个字符数组,懒得数长度,而且这样写的话可移植性应该更好吧···可能不同的计算计中int所占的字节数不同呢
[解决办法]
我认为是这样的:

C/C++ code
#include <stdio.h>void print(int a[]){    for(int i = 0; i < sizeof(a)/sizeof(a[0]); ++i)    {        printf("a[%d] = %d. \n", i, a[i]);    }}void printNew(int a[], int len){    for(int i = 0; i < len; ++i)    {        printf("a[%d] = %d. \n", i, a[i]);    }}int main(){    int ia[] = {1, 2, 3, 4};    // 在这可以通过 sizeof(ia)/sizeof(ia[0]) 算出ia的长度    for(int i = 0; i < sizeof(ia)/sizeof(ia[0]); ++i)    {        printf("a[%d] = %d. \n", i, ia[i]);    }    printf("\n");    // 当int a[]作为参数时,数组型参数弱化为指针,和int *a是一样的。    // 所以print函数中的 sizeof(ia)/sizeof(ia[0]) 无法正确计算出数组的实际长度    print(ia);    printf("\n");    // 所以用int a[]作为数组型参数传递的时候,最好加上一个len参数    printNew(ia, sizeof(ia)/sizeof(ia[0]));    return 0;} 

热点排行