只有数组首地址,打印所有元素
比如 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]);
}
[解决办法]
#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;}