指针与数组

sizeof(数组名):数组名表示整个数组,计算的是整个数组的大小,单位是字节;

&数组名:数组名表示整个数组,取出的是整个数组的地址。

(数组名是数组首元素的地址,类型是int*,+1就是跳过一个整型)

除此之外,数组名表示数组首元素的地址。

1.使用指针访问数组(数组在内存中是连续存放的;指针的加减整数运算,方便获得每一个元素的地址)

int main()
{
int arr[10]={0};

int *p=arr;

int i=0;

for(i=0;i<10;i++)
{
sacnf("%d",p+i);(或者写arr+i)

}

for(i=0;i<10;i++)
{
printf("%d",*(p+i));(或者写*(arr+i)/arr[i]/p[i])

}

return0;

}

arr[i]===>*(arr+i)

arr[i]===>i[arr]

数组就是数组,是一块连续的空间;

指针(变量)是指针(变量),是一个变量(4/8个字节)

数组名是地址,是首元素的地址,可以使用指针来访问数组。

2.一维数组的传参

数组传参的时候,形参是可以写成数组的形式的,但是本质上还是指针变量

数组传参的本质是传递了数组首元素的地址,所以形参访问的数组和实参的数组是同一个数组,形参的数组是不会单独创建数组空间,所以形参的数组是可以省略大小的。

3.冒泡排序(两两相邻的元素进行比较)
bubble_sort(int arr[],sz)

{
int i=0;

for(i=0;i<sz-1;i++)
{
int j=0;

int flag=1'

for(j=0;j<sz-1-i;j++)
{
int tmp=0;

if(arr[j]>arr[j+1])

{
tmp=arr[j];

arr[j]=arr[j+1];

arr[j]=tmp;

flag=0;

}

}if(flag==1)

{break;}

}

}

4.二级指针

int a=10;

int *p=&a;

int **pp=&p;

5.指针数组(存放指针)

6.使用指针数组模拟二维数组

int main()
{

int arr1[]={1,2,3,4,5};

int arr2[]={2,3,4,5,6};

int arr3[]={3,4,5,6,7};

int *arr[]+{arr1,arr2,arr3};

int i=0;

for(i=0;i<3;i++)
{

int j=0;

for(j=0;j<5;j++)
{
printf("%d",arr[i][j]);===>*(*(arr+i)+j)

}
printf("\n");

}

return 0;

}


 


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值