数组

来源:互联网 发布:炒黄金 知乎 编辑:程序博客网 时间:2024/06/02 04:34
指针对二维数组的访问
int main()
{
int arr[3][4];
int i = 0;
int j = 0;
int *p =&arr[0][0];// int *p=arr错误   arr---int (*q) [4] 是指向数组的指针  而int *p是指向整型的指针 
//int a = sizeof(arr) / sizeof(arr[0][0]);// 12
for (i = 0; i < 12; i++)
{
*(p + i) = i;
}
for (i = 0; i <3; i++)
{
for (j = 0; j < 4; j++)
printf("arr[i][j]=%d\n", arr[i][j]);
}
system("pause");
return 0;
}
int main()
{
int arr[3][4];
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
printf("&arr[%d][%d]=%p\n", i, j, &arr[i][j]);//二维数组在内存是连续存放的,arr指第一行地址
}
system("pause");
return 0;
}
int main()
{
int arr[3][4] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i<3; i++)
{
for (j = 0; j < 4; j++)
arr[i][j] = i * 4 + j+1;
}
for (j = 0; j< 4; j++)
{
for (i = 0; i < 3; i++)
printf("%d ", arr[i][j]);//以列打印 二维数组是以下标进行访问


}
system("pause");
return 0;
}
一维数组
int main()
{
int arr[10] = { 0 };
int * p = arr;
int i = 0;
for (i = 0; i < sizeof(arr) / sizeof(arr[0]);i++)
{
*(p + i) = i;//相当于arr[i]=i; 通过指针访问数组
// arr[i]--*(arr+i)—*(i+arr)——i[arr]  
}
for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
printf("%d ",*(p+i));
system("pause");
return 0;
}
int main()
{
int  arr[10] = { 0 };
int i = 0;
for (i = 0; i < sizeof(arr) / sizeof(arr[0]);i++)
{
printf("&arr[%d]=%p\n",i, &arr[i]);//随着下标的增长,元素的地址在不断递增,因此数组在内存中是连续存放的
printf("%p\n", arr + i);//数组的数组名是首元素的地址,对数组名+整数的运算,可以获取每个元素的地址
}
system("pause");
return 0;
}
原创粉丝点击