数组
数组是一组相同类型元素的集合。
注:数组创建, [] 中要给一个常量才可以,不能使用变量。
可以通过 下标引用操作符 " [ ] "来查看相应下标的数组元素
数组的大小可以通过计算得到
一维数组
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
int length = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < length; i++)
{
printf("arr[%d] = %p\n", i, &arr[i]);
}
system("pause");
return 0;
}
一维数组在内存中是连续存放的
二维数组
int main()
{
int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);
}
}
system("pause");
return 0;
}
二维数组在内存中也是连续存放的
指针
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在 电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因 此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
指针就是变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。
指针是用来存放地址的,地址是唯一标示一块地址空间的。
指针的大小在32位平台是4个字节,在64位平台是8个字节。
指针的类型决定了它可以访问的字节数。(根据不同的数据类型所占字节数的大小决定)
二级指针
代表的是指针的地址
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a = 'a';
char *p = &a;
char **p1 = &p;
printf("%c\n", a);
printf("%c\n", *p);
printf("%c\n", **p1);
system("pause");
return 0;
}
数组指针
数组指针 就是指针 这个指针能够指向数组
一般用于二维数组的使用
int main()
{
char arr[3][10] = { "hello", "world", "!!!" };
char (*arr1)[10] = &arr;
for (int i = 0; i < 3; i++)
{
printf("%s ", *(arr1+i));
}
system("pause");
return 0;
}
指针数组
指针数组 是数组 这个数组内的元素是指针类型的
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *arr[10] = { "hello", "world", "!!!" };
for (int i = 0; i < 3; i++)
{
printf("%s ", *(arr+i));
}
printf("\n");
for (int i = 0; i < 3; i++)
{
printf("%s ", arr[i]);
}
system("pause");
return 0;
}
函数指针数组
以函数为指针的数组
函数也有地址,将函数的地址存入数组中就是函数指针数组
int (*funcation[5])(int x, int y);
//其中 funcation[5] 为一个数组 数组的内容是int (*)() 类型的函数指 针。(int x, int y) 为参数 int 为返回值类型