建站的目的,网站的月度流量统计报告怎么做,tinkphp5网站开发,dede网站建设步骤目录
1.数组的地址 2.通过指针访问数组
3.数组和指针的不同点 4.指针数组 1.数组的地址
数组的地址是什么#xff1f;
看下面一组代码
#include stdio.h
int main()
{
int arr[5] {5,4,3,2,1};
printf(arr[0] %p\n, arr[0]);
printf(
看下面一组代码
#include stdio.h
int main()
{
int arr[5] {5,4,3,2,1};
printf(arr[0] %p\n, arr[0]);
printf(arr %p\n, arr);
return 0;
} 运行结果 从上面代码中可以看到数组名和首元素的地址和是一样的
但是有不同的情况
举例
#include stdio.h
int main()
{int arr[6] { 5,4,3,2,1,0 };printf(arr[0] %p\n, arr[0]);printf(arr[0]1 %p\n\n, arr[0]1);printf(arr %p\n, arr);printf(arr1 %p\n\n, arr1);printf(arr %p\n, arr);printf(arr1 %p\n\n, arr1);return 0;
}
运行结果 可以看到当对arr[0],arr,arr都1时arr[0]和arr都移动了4个字节而arr移动了16个字节也就是整个数组的长度。
实际上除了数组名表示整个数组的地址在使用sizeof(数组名)计算数组的字节数时时sizeof中的数组名表示的也是整个数组的地址。 总结数组名表示的是数组首元素的地址但有两个例外 1.数组名 这里的数组名实际上表示的是整个数组的地址 2.sizeof(数组名) 这里的数组名也表示整个数组的地址计算的是整个数组的字节数。 2.通过指针访问数组
#include stdio.h
int main()
{int arr[5] { 0,1,2,3,4, };int i 0;int n 100;int* p arr;for (i; i 5; i)//通过指针p给数组重新赋值{*p n;n;p ;}for (i 0; i 5; i)//打印数组每个元素{printf(%d , arr[i]);}return 0;
}
运行结果 可以看到数组的值可以通过指针被改变
把代码稍作修改
#include stdio.h
int main()
{int arr[5] { 0,1,2,3,4, };int i 0;int n 100;int* p arr;for (i; i 5; i)//通过指针p给数组重新赋值{*p n;n;p;}for (i 0; i 5; i)//打印地址{printf(arr[i] %d\npi %d\n, arr[i],pi);}return 0;
}
运行结果 可以看到arr[i]的地址就是指针变量p1的地址这也是通过指针更改变数组的每一个元素的原因 3.数组和指针的不同点
int arr[10];
int * p arr:
p arr;
//ok 当给p进行赋值时程序会正常执行
int arr[10];
int brr[10];
arr brr;
//err 当给函数名赋值时程序会报错 总结赋值表达式的左操作数不能是数组名但可以是指针变量。 4.指针数组
指针数组就是存放指针的数组
例如
#include stdio.h
int main()
{int a 0;int* p a;int* pp a;int* ppp a;int arr[3] { *p,*pp,*pp };printf(%d %d %d\n, arr[0], arr[1], arr[2]);return 0;
}
运行结果 通过上面的代码可以看到通过指针数组的元素也能访问到指针指向的变量。 注意指针数组是数组而数组指针是指针 指针数组是存放指针的数组数组指针是指向数组的指针。