数组与指针
数组的认识
数组:
在C语言中,数组是一种用于存储相同类型的多个元素的数据结构。数组可以包含任意数量的元素,但一旦创建,其大小通常不能更改。
基本语法:
type arrayName[arraySize];
数组与指针转化:
int arr[5];
int *ptr = arr; // 等价于 int *ptr = &arr[0];
一维数组:
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5}; // 创建一个包含5个整数的数组
int i;
// 打印数组的每个元素
for (i = 0; i < 5; i++) {
printf("数组[%d] = %d\n", i, arr[i]);
}
return 0;
}
二维数组:
#include <stdio.h>
int main(){
int arr[4][5]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};
int i,j;
for( i = 0; i < 4; i++)
{
for(j=0;j<5;j++){
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
通过指针访问数组
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // p指向arr的首元素
for (int i = 0; i < 5; i++) {
printf("%d ", *p);
p++; // 指针递增,移动到下一个元素
}
return 0;
}
运行结果:
1 2 3 4 5
数组换位:(几种方法)
利用指针实现数列换位
#include <stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int *p= &arr[0];
int *q= &arr[9];
int temp;
//正序输出
for (int i = 0; i < 10; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
while(p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
//将数组输出
for(int i=0;i<10;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
运行结果:
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
普通数组换位:
#include <stdio.h>
int main(){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int i,j;
int temp;
for ( i = 0; i < 10; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
for ( i = 0; i < 5; i++)
{
temp =arr[i];
arr[i]=arr[9-i];
arr[9-i]=temp;
}
for ( j = 0; j < 10; j++)
{
printf("%d ",arr[j]);
}
return 0;
}
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
!!指针数组
通过指针数组实现对几个数组的输出
- 第一步
数组的创建
(这里创建是三个数组)
int arr1[5]={1,2,3,4,5};
int arr2[5]={1,2,3,4,5};
int arr3[5]={1,2,3,4,5};
- 第二步
创建指针数组并且赋值
int *Ap[3];
Ap[0]=arr1;
Ap[1]=arr2;
Ap[2]=arr3;
- 第三步
循环遍历数组
for ( i = 0; i < 3; i++)
{
p = Ap[i];
for ( j = 0; j < 5; j++)
{
printf("%d ",*(*p+j));
}
printf("\n");
}
- 总结
通过使用指针数组 Ap 来管理三个数组,并通过双重指针 p 来访问和打印数组中的元素。在内部循环中,通过指针的间接引用操作 *(*p+j),将数组中的元素依次打印出来。
#include <stdio.h>
int main() {
int arr1[5]={1,2,3,4,5};
int arr2[5]={1,2,3,4,5};
int arr3[5]={1,2,3,4,5};
int *Ap[3];
int i,j,k;
Ap[0]=arr1;
Ap[1]=arr2;
Ap[2]=arr3;
int **p;
for ( i = 0; i < 3; i++)
{
*p = Ap[i];
for ( j = 0; j < 5; j++)
{
printf("%d ",*(*p+j));
}
printf("\n");
}
return 0;
}
输出结果:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
谢谢阅读,本人正在学习过程中----from BX