C语言访问数组的常用方法,C语言数组基本知识点详解

数组基本知识点:

1,数组初始化,命名

2.数组大小,数组类型

3.数组访问方法

4.字符数组

5.数组下标越界

6.数组作为函数参数问题

7.二维数组基本概念以及多维数组

以后还会有关于指针数组问题

#define _CRT_SECURE_NO_WARNINGS

#include#include

void main()//二维数组初始化,大小

{

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 4; j++)

{

printf("   %d,%x", a[i][j], &a[i][j]);//二维数组展开来就是一位数组

}

printf("\n");

}

2d0e2a0981904284bdf243b6381dd40e.png

printf("%d", sizeof(a));//二维数组大小等于元素个数乘以4

system("pause");

}

void main34()//数组下标越界问题

{

int num[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

for (int i = 0; i < 11; i++)

{

printf("%d ,%x\n",   *(num + i), num + i  );//最后一个打印的值是垃圾值

   8188e3ca305e48fc93878b019faca2c2.png

//数组下标越界编译器不会报错,因为数组的外部内存空间,不确定是否有权限,如果越界访问程序可能奔溃

}

system("pause");

}

void gogo(int a[10])

{

printf("%d\n", sizeof(a));//数组作为函数参数的时候,传递的是地址

}

void main33()//

{

int a[10];

printf("%d\n", sizeof(a));//这里数组的大小是40

gogo(a);

cc78c43a85514c2289c7a27561254871.png//数组作为函数参数是传递的仅仅是数组首地址,如果不是参数仍然是数组大小

system("pause");

}

void main32()//数组访问问题

{

int num[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

for (int i = 0; i < 10; i++)

{

printf("%d,%d,%x,%x\n", num[i], *(num + i), num + i, &num[i]);

746ae1c307584265902a7011cc3388d7.png

//num[i]等价于*(num+i),数组每个元素的地址num+i等价于 &num[i]

} for (int i = 9; i >= 0; i--)//逆序输出数组元素个数

{

printf("%d\n", *(num + i));

}

system("pause");

}

void main31()//数组与字符串

{

char str1[ ] = { 'c', 'a', 'l', 'c' };//大括号不会加上 \0

char str2[ ] = "calc";//字符串双引号会自动加上\0,所以输出不会烫

printf("%s\n", str1);

printf("%s", str2);

273b1c4a95494db1a4951500a6118251.png

//system(str2);

system("pause");

}

void main30()

{

int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

printf("%x\n", a);

printf("%d\n", sizeof(a));//求数组大小问题

printf("%d\n", sizeof(a) / 4);//求数组元素个数,数组每个元素在内存中是连续的

for (int i = 0; i < 10; i++)

{

printf("\na[%d]=%d &a[%d]=%x", i, a[i], i, &a[i]);

}

system("pause");

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值