数组
来源:互联网 发布:js实现格式化html代码 编辑:程序博客网 时间:2024/04/30 07:39
C语言中的数组是一种将标量聚集成更大数据类型的方式。
#include <stdio.h>#include <stdlib.h>#include <string.h>void PrintArray(int arr[], int n){printf("array:\n");for (int i = 0; i < n; i++) {// printf("%d\t", arr[i]);printf("%d\t", *(arr + i));}printf("\n");}// 数组做参数时,传递的是数组首地址的值// 形参在内部退化成局部变量的指针void PrintArgInfo(int arr[], int n){printf("function argument:\n");printf("arr: 0x%x\n", arr); // int *printf("sizeof(arr): %d\n", sizeof(arr)); // 4}int main(){// 一维数组// *(arr + x) = arr[x];int arr[3] = { 1, 2, 3 };PrintArray(arr, 3); printf("arr: 0x%x\n", arr); // int *printf("sizeof(arr): %d\n", sizeof(arr)); // 12printf("arr[1]: %d\n", *(arr + 1)); // arr[1] = 2PrintArgInfo(arr, 3);getchar();return 0;}
#include <stdio.h>#include <stdlib.h>#include <string.h>// 二维数组作形参时,需要指定数组二维的大小// 1)int arr[][m]; 2)int (*arr)[m]// void Print2Array(int arr[][4], int n)void PrintArray(int(*arr)[4], int n){printf("array:\n");for (int i = 0; i < n; i++) {for (int j = 0; j < 4; j++) {printf("%d\t", arr[i][j]);}printf("\n");}}int main(){// 二维数组,即数组的数组// *(*(arr + x) + y) = arr[x][y];int arr[3][4] = {1, 2, 3, 4,5, 6, 7, 8,1, 2, 3, 4};typedef int col4[4];col4 A[3];PrintArray(arr, 3);printf("&arr: 0x%x\n", &arr); // int (*)[3][4]printf("sizeof(&arr): %d\n", sizeof(&arr)); // 4// 数组做参数时,传递的是数组首地址的值printf("arr: 0x%x\n", arr); // int (*)[4]printf("sizeof(arr): %d\n", sizeof(arr)); // 48printf("arr[0]: 0x%x\n", arr[0]); // int *printf("sizeof(arr[0]): %d\n", sizeof(arr[0])); // 16printf("arr[1][2]: %d\n", *(*(arr + 1) + 2)); // arr[1][2] = 7getchar();return 0;}
总结
1) 数组名本质上是指向该数组首地址的常量指针。
2) 数组做实参时,传递的是数组首地址的值;数组作形参时,在内部退化成局部变量的指针。
3) 多维数组,即数组的嵌套,可以看成是数组的数组。
4) 二维数组作形参时,需要指定数组二维的大小。
5) 可以使用指针对数组元素进行操纵,arr[i] = *(arr + i)等价。
1 0
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- JS正则表达式常用总结
- 学习R语言 分词
- Linux系统安装时分区的方案
- PAT (Advanced Level) Practise 1011 World Cup Betting
- [LeetCode]Kth Largest Element in an Array
- 数组
- Boost库的简介与安装
- C/C++子函数参数传递,堆栈帧、堆栈参数详解_1
- 《UNIX网络编程卷1》第一例及问题
- 洛谷 P1339 [USACO09OCT]热浪Heat Wave(用Dij)
- 1005. 继续(3n+1)猜想 (25)
- CF
- 记录当前项目lua内存泄露问题
- Socket网络编程(多客户端、信息共享、文件传输)