[源码下载]

不可或缺 Windows Native (5) - C 语言: 数组

作者:webabcd

介绍
不可或缺 Windows Native 之 C 语言

  • 数组

示例
cArray.h

#ifndef _MYHEAD_ARRAY_
#define _MYHEAD_ARRAY_ #ifdef __cplusplus
extern "C"
#endif char *demo_cArray(); #endif

cArray.c

/*
* 数组
*
*
* 定义数组,int ary[10],相关说明如下:
* 1、int 是数据元素的数据类型,10 是数组元素个数,系统会根据数组元素的数据类型和元素个数来分配内存空间
* 2、整个数组是以首地址开头的一块连续的内存单元
* 3、数组名 ary 就代表了该数组的首地址,也就是说 ary 相当于 &ary[0]
*/ #include "pch.h"
#include "cArray.h"
#include "cHelper.h" char *demo_cArray()
{
// 定义并初始化一个数组
// int ary[] = { 0, 1, 2, 3, 4 }; // 定义一个长度为 10 的数组,并初始化前 5 个元素,其他元素默认为 0
// 注:定义数组的长度时必须用常量,不能用变量(注:ANSI C99 是允许用变量定义局部数组大小的)
int ary[] = { , , , , };
// 修改数组中某一个元素的值(注:只能对数组的元素赋值,而不能用赋值语句对整个数组赋值)
ary[] = ; // sizeof(ary) - 数组 ary 占用的内存空间
// 由于 ary 是一个整型数组,而每个整型数据占用 sizeof(int) 个字节的空间,则数组元素的个数为 sizeof(ary) / sizeof(int)
int count = sizeof(ary) / sizeof(int);
for (int i = ; i < count; i++)
{
int x = ary[i];
} // 指定行数(一维长度)和列数(二维长度)定义一个二维数组,并初始化
int ary2[][] = { { , }, { , }, { , } };
// 修改二维数组中某一个元素的值
ary2[][] = ; // 初始化二维数组时,也可以一行一行地按顺序写入数据,如下。其结果同上
// int ary2[3][2] = { 1, 2, 3, 4, 5, 6 }; // 定义二维数组时,可以省略行数(一维长度),如下。其结果同上
// int ary2[][2] = { 1, 2, 3, 4, 5, 6 }; // 遍历二维数组
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
int x = ary2[i][j];
}
} // 定义一个字符数组,并初始化
// char aryStr[] = { 'i', ' ', 'a', 'm', ' ', 'w', 'e', 'b', 'a', 'b', 'c', 'd' }; // 长度12,占用空间12 // 定义一个字符数组,并按字符串的形式对其初始化
// char aryStr[] = { "i am webabcd" }; 同 char aryStr[] = "i am webabcd"; // 长度12,占用空间13 // 以字符串的形式赋值给字符数组时,会自动在结尾处多加一个字符串结束符,即'\0',用于标记字符串结束(字符串的结束标识为:'\0',即 ASCII 码中的 0,也就是 NULL)
char aryStr[] = "i am webabcd"; // 字符串长度
int length = strlen(aryStr); // 12
// 字符串占用的内存空间(如果 aryStr 赋值给别人,或当做参数传递时,其就表现为数组的首地址了,如果再对其 sizeof 的话,取得的就是指针所占用的内存空间的大小)
int memory = sizeof(aryStr); // /*
* 注意:
* 1、此处通过 sizeof(aryStr) 获取到的是数组的空间占用,通过 strlen(aryStr) 获取到的是数组的长度
* 2、然而之前我们说过,数组名 aryStr 就是数组的首地址,整个数组是以首地址开头的一块连续的内存单元
* 3、当我们把 aryStr 赋值给别人(比如 char *s = aryStr;),或当做参数传递时,其就表现为数组的首地址了。比如在对应的形参中,如果 sizeof(ary) 的话,其得到的是指针占用的内存空间的大小
*/ /*
* 另:
* 1、如果你知道了一个字符串的首地址,那么你就知道这个字符串的长度,因为它会以“0”结尾
* 2、如果你知道一个普通数组的首地址,那么你是不知道这个数组的长度的,因为你不知道它在哪里结尾
*/ // 写到数组了,就用“冒泡排序”举个例子吧
// 记得以前去某公司 C# 笔试,题目是对一个数组排序,我写的是
/*
int[] ary = { 1, 9, 5, 6, 3 };
ary = ary.OrderBy(p => p).ToArray();
*/
// 结果面试官说这个不对...
void bubble_sort(int ary[], int length);
int ary_int[] = { , , , , , };
bubble_sort(ary_int, ); // 2, 6, 14, 19, 26, 80 return str_concat2(int_toString(length), int_toString(memory));
} // 冒泡排序算法
void bubble_sort(int ary[], int length)
{
for (int i = ; i < length - ; i++)
{
bool sorted = true; for (int j = ; j < length - - i; j++)
{
if (ary[j] > ary[j + ])
{
sorted = false;
int temp = ary[j];
ary[j] = ary[j + ];
ary[j + ] = temp;
}
} if (sorted)
break;
}
} /*
写到 for 循环,然后发现一个事情 for(int i=0;;) 这个在 C99 下是合法的 而以前的标准 for(int i=0;;) 是不合法的(不能在语句中声明变量),需要这么写
int i;
for(i=0;;);
*/

OK
[源码下载]

不可或缺 Windows Native (5) - C 语言: 数组的更多相关文章

  1. 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型

    [源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...

  2. 不可或缺 Windows Native (6) - C 语言: 函数

    [源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...

  3. 不可或缺 Windows Native (7) - C 语言: 指针

    [源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...

  4. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

  5. 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域

    [源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...

  6. 不可或缺 Windows Native (10) - C 语言: 文件

    [源码下载] 不可或缺 Windows Native (10) - C 语言: 文件 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 文件 示例cFile.h #ifn ...

  7. 不可或缺 Windows Native (1) - C 语言: hello c

    [源码下载] 不可或缺 Windows Native (1) - C 语言: hello c 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 在 Windows Sto ...

  8. 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等

    [源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native  ...

  9. 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出

    [源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...

随机推荐

  1. BTrace入门教程

    bin版:https://kenai.com/projects/btrace/downloads/directory/releases 源码:https://github.com/btraceio/b ...

  2. 我也要学iOS逆向工程--函数

    大家好,这篇我开始学习函数了.先学 C 函数,然后再 OC 的吧.OC 应该复杂点的吧. 然后看看汇编情况哦! 学习函数呢,肯定要弄清楚几个事情. 1.跳转地址. 2.返回地址 3.参数 4.函数获取 ...

  3. HTML5新特性之移动设备API

    为了更好地为移动设备服务,HTML5推出了一系列针对移动设备的API. 1.Geolocation API Geolocation接口用于获取用户的地理位置.它使用的方法基于GPS或者其他机制(比如I ...

  4. Session机制详解

    转自:http://justsee.iteye.com/blog/1570652 虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能 ...

  5. C primer plus 练习题 第一章

    1. #include <stdio.h> int main() { //将英寸转换为厘米 1英寸=2.54厘米 int inch; printf("请输入英寸:"); ...

  6. 配置Pylint for Python3.5

    事件的缘由是因为在Ubuntu16.04 下面安装了Visual Studio Code, 再编辑的时候说需要Pylint来检查语法,我系统的默认的Python 版本是python2,而我现在正在学习 ...

  7. 对已经add的文件不在跟踪

    记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝.接下来,对这些文件作些修改,在完成了一个阶段的目标之后,提交本次更新到仓库. 请记住,工作 ...

  8. 基于nodejs实现js后端化处理

    今天D哥给我提了个问题,"用php执行过js没"?咋一听,没戏~~毕竟常规情况下,js是依赖浏览器运行的.想在php后端采集的同时利用js运行结果并传递给php使用,没戏! 然后回 ...

  9. Activity not started, its current task has been brought to the front

    运行错误:Activity not started, its current task has been brought to the front . 原因分析:因为你的模拟器中还有东西在运行,也就是 ...

  10. 2014-09-19.xml

    <wordbook><item>    <word>basel</word>     <trans><![CDATA[ n. 巴塞尔( ...