电影网站建设策划书,无锡做网站,引流推广网站,无锡市住房和城乡建设局网站博客内容#xff1a;数组与指针 文章目录 一、 数组#xff1f;指针#xff1f;1.区别与联系大小赋值存储位置 二、指针数组、数组指针#xff1f;二维数组和二级指针数组名与数组的区别总结 一、 数组#xff1f;指针#xff1f;
数组 相同类型数据的集合 指针 指… 博客内容数组与指针 文章目录 一、 数组指针1.区别与联系大小赋值存储位置 二、指针数组、数组指针二维数组和二级指针数组名与数组的区别总结 一、 数组指针
数组 相同类型数据的集合 指针 指针是内存地址指针变量是保存指针的变量。一般我们使用的都是指针变量。 1.区别与联系
大小
对于数组来说可以在定义时控制大小也可以不固定大小。使用关键字sizeof来计算。
int main()
{int arr[5];int brr[] { 1,2,3,4,5 };printf(%d \n,sizeof(arr));printf(%d , sizeof(brr));return 0;
}对于指针只关心机器在32位机器下大小为4字节,64位下为8字节
int main()
{int* ptr;char* srt;printf(%d \n, sizeof(ptr));printf(%d \n, sizeof(srt));return 0;
}赋值
指针只要类相同就可以进行赋值数组需要一个一个进行赋值。
存储位置
数组存储在栈上或者使用内存函数malloc在对上开辟空间。 指针本身就是一个变量存放指针的也是一个变量所以存储位置不确定。
二、指针数组、数组指针
指针数组 本质是数组数组中每个元素的类型是指针 int* arr[10]//存储的10个int类型的指针数组指针 是指针是一个指向数组的数组的指针。 int*parr[10];//这是指针指向的是一个数组数组中有10个int类型。如果查看运算符优先级表可以看出对于[]的优先级高于*。所以使用来让*优先级提高。这样就方便记忆了。 同样类似的还有函数指针
void Add(int a,int b)
{printf(%d\n, a b);
}
int main()
{void(*fun)(int, int) Add;Add(1, 2);fun(1,2);(*fun)(1, 2);return 0;
} 函数指针在使用时可以解引用也可以直接使用指针。
二维数组和二级指针
二维数组 对于二维数组看做是一个数组中存储了一个数组。对于二维数组的表示是行可不写但是列必须有。初始化时不可以间断。
int arr1[10][];int arr2[][2] { {1,2},{},{2,3} };二级指针就是指向指针的指针。
int main()
{int i 10;int* p i;printf(%d\n,*p);int** q p;printf(%d\n, (*(*q)));return 0;
}当然数组在传参时可以使用指针来作为形参。
数组名与数组的区别
int main()
{int arr[10];printf(%p\n, arr);printf(%p\n, arr1);printf(%p\n, arr);printf(%p\n, arr1);return 0;
}是对整个数组的地址数组名代表首元素位置。对于数组这样连续的空间数组使用数组来记录开始位置。所以这就为什同样是1但是内存地址的差距这么大原因。 总结
使用数组和指针的转换对于我们编程来说会变得更加灵活指针使用到位会让数组代码看起来更加的优雅。