指针+数组=指针数组
指针–>数组—>指针数组
指针
什么是指针?在计算机科学中,指针(Pointer)是编程语言的一个对象,利用地址,它的值直接指向(Pointer)存在电脑存储器中另一个地方的值。由于通过地址能和找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能够找到以它为地址的内存单元。在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通那个地址中存储的值。做个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考操作。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c = 'w';
char* cp = c;
//%p是输出地址
printf("%c".c);
printf("%p",&c);
printf("%p\n",cp);
//观察能都通过解引用操作通过地址改变变量的值
*cp = 'b';
printf("%c",c);
printf("%p",&c);
printf("%p",cp);
system("pause");
return 0;
}
数组
所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,又是也称为下标变量。用于区分数组的各个元素的数字编号为下表。数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。
#include <stdio.h>
#include <stdlib.h>
void test1(int arr[10])
{
printf("arr -->%p",arr);
printf("arr[0] = %d",*arr);
}
void test2(char arr[])
{
printf("arr-->%p",arr);
printf("arr[0] = %c",*arr);
}
int main()
{
int arr1[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
char arr2[] = "hello world!";
//函数传参 数组名是数组第一个元素的地址
//函数名和首元素地址一样 但是数组名 “不等于” 数组首元素地址
//打印int型数组
test1(arr1);
printf("arr1-->%p",&arr1[0]);
//打印char类型数组
test2(arr2);
printf("arr2--->%p",&arr2[0]);
system("pause");
return 0;
}
指针数组
指针数组是指针还是数组?
指针数组是“数组”,是存放指针的数组
int arr1[6];
char arr2[6];
int* arr3[6];