×

指针数组 数组

指针数组怎么使用?VB 中数组到底是什么意思 可以做什么

admin admin 发表于2022-05-29 20:21:16 浏览155 评论0

抢沙发发表评论

指针数组怎么使用


在C语言和C++等语言中,数组元素全为同一类指针变量的数组称为指针数组,指针数组中的元素都必须具有相同的存储类型、指向相同数据类型的指针变量。指针数组比较适合用来指向若干个字符串,使字符串处理更加方便、灵活。一维指针数组的定义形式为:“类型名 *数组标识符[数组长度]”。

VB 中数组到底是什么意思 可以做什么


数组可以看做是某种变量的集合
比如你定义一个整型数组a(9),就可以给a(0)~a(9)赋值,需要调用的时候也非常方便。如果没有数组,就需要用户自己命名,如果要保存10个整型数据,就得定义十个不同的整型变量,非常麻烦。
比如:
dim
a(9)
as
integer
for
i=0
to
9
a(i) =i
next
i
这样就很快捷的给0~9这十个数定义了十个变量来保存

字符串与字符数组的区别


在本节中我们来学习关于字符数组和字符串的相关知识。我们知道定义一个数组时需要为其指定相应的变量类型。也就是说,定义了数组的类型之后这个数组中的所有变量就都是相同的类型。现在我们就来定义一个字符弄型的数组,如下:

char hello = {’H’,’e’,’l’,’l’,’o’};
这样我们就定义了一个字符型的数组,对于数组型的变量这样定义是没有问题的,但有两个方面的不足:

1·定义的过程比较麻烦,在数组变量初始化时需要逐个写出每一个字符,并在这每一个字符的两端加上一对单引号。

2.在显示字符数组时,我们通常希望能够让其一次性的显示出来,而不是通过循环数组的方式逐个显示这些字符。

例如上面定义的数组我们想要用printf将其显示出来我们则需要通过循环的方式:

char hello = {’H’,’e’,’l’,’l’,’o’};
for (int i = 0; i 《 5; i++)
{
printf(“%c“, hello[i]);
}

Hello
其实,在C语言中支持直接定义字符串的方式来为定义字符数组,例如:

char hello = “Hello“;
printf(“%s“, hello);

Hello
注意,我们在定义这个数组时,指定数组的大小为6,也就是说需要申请6个字节的存储空间,而在等号右侧的双引号中我们却只书写了5个字符。这并不是笔误,C语言规定当使用双引号定义字符串时以’\0’作为这个字符串的结束标志符,也就是说这个字符串一共有6个字符,分别是’H’、’e’、’l’、’l’、’o’、’\0’。关于\0读者只需要知道这是一个特殊的字符即可,它表示字符串的结束,它的值为0。这样我们就可以通过printf函数将这个字符串直接打印出来。需要注意的是,当使用printf来显示字符串时,我们要确保这个字符串变量中最后一个结束字符为\0,如果结束字符不是\0则printf在显示这个字符串时,就不知道显示到何处结束,例如

char hello = “Hello“;
printf(“%s“, hello);

Hello#@($0948#.“
也就是说,我们虽然定义了一个字符串,但只定义了5个字符的长度,而使用双引号为其初始化时,这个字符串的实际大小应该是6因为要追加一个\0,但我们在定义数组大小时只指定其大小是5所以这个数组中的中只有5个元素分别是’H’、’e’、’l’、’l’、’o’。而在’o’之后并没有’\0’,所以在printf显示这个字符串时,显示 Hello之后,并不知道何时结束,所以就会继续显示,直到遇到一个’\0’为止,于是我们程序就出现了非预期的结果。这样的程序并不是我们提倡的,我们在定义字符串时一定要为其多分配一个字符的长度,以便存放字符串的结束符’\0’。当然,使用双引号定义的字符串可以像使用普通数组一样使用其数组元素例如ABC运行结果可以看到直接显示字符串和循环显示字符数组中的元素的效果是一样的。

char str = “Hello“;
printf(“%s\n“, str);

for (int i = 0; i 《 sizeof(str); i++)
{
printf(“%c“, str[i]);

}
printf(“\n“);

Hello
Hello
在这里我们使用了另一个重要函数sizeof(),它的作用是可以计算出某一个变量或类型的大小,就是占用的内存字节数,例如:

char ch;
short sh;
int i;
printf(“%d %d %d %d %d\n“,
sizeof(ch),
sizeof(sh),
sizeof(i),
sizeof(long),
sizeof(long long));

1 2 4 8 8
请注意,long类型的变量在不同的操作系统下占用字节数可能不同,请参数参见《变量大小》。另外在使用sizeof来计算数组大小时,计算的是数组一共占用内存的字节数,而不是数组的元素元素的个数,例如:

int array;
printf(“%d\n“, sizeof(array));
上面例子的结果是16而不是4。
-指针数组