C语言数组和指针

本文详细介绍了C语言中的数组和指针。数组作为数据存储的结构,分为一维数组,包括定义、初始化及元素引用。指针则是存储地址的变量,通过定义、初始化和运算操作来使用。指针与数组有着密切关系,可以用于引用数组。此外,无论指针的基类型如何,其在内存中占用的字节数相同。

一,C语言的数组

1.什么是数组
数组是存储数据的结构。由于单个变量所能存储的数据很有限,所以有了数组存储结构。不仅如此,数组和指针是相辅相成的,学习数组可以为学习指针打下基础。
2.数组的定义方式
2.1一维数组
(1)通常一维数组的定义方法为:
类型说明符 数组名[常量表达式];
例如:

int a[5];

(2)它表示定义了一个整型数组,数组名为 a,定义的数组称为数组 a。数组名 a 除了表示该数组之外,还表示该数组的首地址;此时数组 a 中有 5 个元素,每个元素都是 int 型变量,而且它们在内存中的地址是连续分配的。也就是说,int 型变量占 4 字节的内存空间,那么 5 个int型变量就占 20 字节的内存空间,而且它们的地址是连续分配的。
2.2、一维数组初始化
(1)完全初始化
给数组里的元素全部赋值。
例如:

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

(2)不完全初始化
给数组里的部分元素赋值。

int a[5] = {1, 2};

(3)如果定义时就已经给全部数组元素赋了初值,那么你可以不用定义数组长度,因为元素的个数已经确定了。这样既方便也不会报错。

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

2.3、一维数组元素的引用
C 语言规定,只能逐个引用数组元素,而不能一次引用整个数组。前面讲过,数组元素的表示形式为:数组名[下标]
下标可以是整型常量或整型表达式,比如:
a[0] = a[5] + a[7] - a[2 * 3]
例如“int a[5];”是定义了有 5 个元素的数组,这 5 个元素分别为 a[0]、a[1]、a[2]、a[3]、a[4]。而 t=a[3] 中的 a[3] 不是数组,只是其中的元素 a[3]。

二,c语言的指针

1.什么是指针
指针就是地址。
2.指针变量的定义
首先要区分指针与指针变量:指针是地址,而指针变量是用来存放这个地址的变量。
指针变量定义的一般形式:基本数据类型 + ’ * ’ + 变量名。
3.指针变量的初始化

int i = 3, *j; j = &i;
int i = 3; int *j = &i; //*j表示定义了一个指针变量j, 并将变量i的地址赋给它

4.指针的运算
指针指向变量地址,若原变量的内容发生了变化,它本身也会发生变化,指针之间的运算一般为值运算和地址运算
(1)值运算:直接通过运算方式,像a+(a+1),结果为第一个元素与第二个元素相加。

int nums[5]={0,1,2,3,4};
int *a=nums;

(2)地址运算:通过a+i的方式.指针会指向a的下i个地址。
例如:

int nums[5]={0,1,2,3,4};
int *a=nums;
a=a+2;
printf("%d\n",*a);
结果输出2

三,指针和数组

(1)指针引用数组

int main(void)
{
    int a[] = {1, 2, 3, 4, 5};
    int *p = &a[0];
    int *q = a;
    printf("*p = %d, *q = %d\n", *p, *q);
    return 0;
}

上述程序中p与 q的值是相同的,这就表明p = &a[0]与q = a是等价的。
(2)不同指针类型的大小

int main(void)
{
    int    *a = NULL;
    float  *b = NULL;
    double *c = NULL;
    char   *d = NULL;
    printf("%d %d %d %d\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d));
    return 0;
}

运行结果:4,4,4,4
总结:可见,不管是什么基类型,系统给指针变量分配的内存空间都是 4 字节。在 C 语言中,只要是指针变量,在内存中所占的字节数都是 4。指针变量的“基类型”仅用来指定该指针变量可以指向的变量类型,并没有其他意思。不管基类型是什么类型的指针变量,它仍然是指针变量,所以仍然占 4 字节。

Dream Aquarium 是下一代虚拟水族馆屏幕保护程序,以无与伦比的逼真度将郁郁葱葱的淡水水族馆的美丽带入您的计算机。Dream Aquarium 虚拟鱼类惊人逼真的行为动作。 这些不是真正的鱼! 它们是 100% 由计算机生成的鱼类,可以完成真实鱼类的所有工作-啄鱼缸中的物体,吃东西,互相追逐,在植物间游泳,在水中闲逛享受生活! 超酷海洋馆屏保 Dream Aquarium Screensaver 中文版超酷海洋馆屏保 Dream Aquarium Screensaver 中文版Dream Aquarium Screensaver 特征:·任何虚拟水族馆中最真实的鱼类运动行为。·提琴蟹清洁水族馆底部并追逐鱼类。·鱼有铰接的鳍,动眼,腮嘴。·美丽的不断变化的光线,地面的涟漪,鱼类可以游泳的轻柔挥舞的植物,鱼类所投射的柔阴影,可配置的气泡流,自动或手动喂食。·添加一百多种鱼(来自27种),无需离开水族馆即可更改设置。·免费的演示水族馆屏幕保护程序,不包含任何广告软件或间谍软件。·宽屏格式,多显示器支持等等!Dream Aquarium 是一个高度可配置的 Windows 屏幕保护程序,可在您的桌面上创建一个虚拟水族馆,其中包含多种鱼类,以更好地模拟水下生物。Dream Aquarium 最好的事情之一是有大量的自定义选项,因此,您不仅可以管理鱼缸中的鱼,而且可以更改鱼缸设置。Dream Aquarium 允许您调整背景设置,甚至完全更换鱼缸,同时还包括多种鱼,可以在所选鱼缸中添加新鱼。此外,还有一些专用选项可以更改气泡速度,甚至可以使屏保在宽屏显示器上运行,从而可以在其中安装任何台式机。最后但并非最不重要的一点是,除了具有吸引人的元素之外,Dream Aquarium 还包含多显示器支持,这也使其适合经验丰富的用户。市场上大多数类似的屏幕保护程序都在激活时严重地使计算机承受压力,并且需要或多或少的高级图形卡,但 Dream Aquarium 可以提供非常流畅的体验。它可以在所有 Windows 版本上完美运行,除了它提供了两种不同的图形模式(DirectX 9 OpenGL)外,它还可以基本上在新旧系统上运行。该程序虽然拥有众多鱼类,但并未提供有关它们的任何信息,该功能可以帮助很多想学习水下生物新知识的人。总体而言,Dream Aquarium 显然是一种使桌面动起来的有趣方式,并且由于它包含了许多自定义选项,因此无论是初学者还是经验丰富的用户都可以轻松安装它,而没有任何风险。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜羊羊zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值