弱化为指针是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/11 16:52:02
问题来源于下面一个程序,程序是正确且能运行成功的,这个程序是问一个大哥得出的答案,小弟刚学C++,很多不懂,在这一句void sort(int inArray[],int inSize)中,int inArray[],inSize这里能理解,但后面在main函数中,sort(inArray, 书写为这样,请问是为什么呢,我把这句改为sort(inArray[],编译要报错,语法错误,不知为什么,后来问人说,是数组不能做参数,要弱化为指针,可是在上面,定义函数的时候就可以那样写inArray[],为什么呢,谢谢

#include<iostream>
using namespace std;

void sort(int inArray[],int inSize)
{
for(int i = 1;i < inSize;i++) //对数组中下标为i的元素进行定位,而下标小于i的已经排好序
//由于i=0的时候没有下标小于i的元素,所以i从1开始
{
int element = inArray[i]; //保存这个需要插入到前面的已排序的数组的元素
int j = i - 1; //从下标为i-1的元素向前检查
while(j >= 0&&inArray[j] > element) //如果还有元素,且被检查的元素大于这个element
{
inArray[j+1] = inArray[j]; //这个元素后移
j--; //继续检查前一个元素
} //在j为-1或者inArray[j]为小于element的

因为,函数声明为:
void sort(int inArray[],int inSize)
跟函数声明为:
void sort(int *inArray,int inSize)
是一样的。

数组实际上就是指针,所以,主函数用要使用sort(inArray,...)

作函数形参的时候,可以这样写:int inArray[]
调用的时候,int inArray[]这样写是不对的
要么[]中加数字,如inArray[0]表示第一个元素
要么直接写inArray,表示数组,实际上也是指针

声明并同时初始化的时候,也可以把[]中的数字去掉
编译器会自动判断元素个数的,如
int inArray[]={1,2};