c语言的数组与字符串
来源:互联网 发布:海拔修正u50数据曲线 编辑:程序博客网 时间:2024/04/30 06:14
1.数组
- 现在有一个简单的数组
int a[10]
,以该数组作为例子分析 - a是一个
int *
类型的变量。值是数组首元素a[0]
的地址。其用法和含义都和数组首元素有关,与数组整体无关 &a
是一个int (*) [10]
类型的变量,值是数组首元素a[0]
的地址。其用法和含义都和数组整体有关,与数组首元素无关&a[0]
是一个int *
类型的变量,值是数组首元素a[0]
的地址
测试:
a + 1的值是&a[1]&a + 1的值越界了(指向了后面一个数组去了....)&a[0] + 1的值是&a[1]
- 注意,a这个int *类型的变量还有一种特殊用法,理论上它作为指针,大小应为4,但其实作为sizeof的参数时,可以求出数组的大小
测试:
sizeof(a)的值为40sizeof(&a)的值为4sizeof(&a[0])的值为4
2.二维数组
- 二维数组的维度:以
int a[2][5]
为例,2是第一维,5是第二维 - 二维数组维度分析和分析指针的方法一样,第一步,找变量名。第二步,根据优先级结合。首先
a
和[2]
结合,说明a是一个有2个元素的数组,其int [5]
说明a内的元素是含有5个int的数组 - 二维数组名称的含义:a是一个数组指针,指向了第二维的元素,在这里类型是
int * [5]
,其值与&a[0]
的值相同 - 二维数组的指针访问:如果要访问
a[i][j]
,思路是先访问a的第i个元素,再访问第i个元素的第j个元素
int (*p)[5];p = a; //让指针指向数组的首元素地址*(*(p+i)+j) //这个表达式的值就是a[i][j],关于数组指针的解引用含义,详见4.1
3.字符串
- 字符串的本质就是指针指向头,尾部固定,地址连续相连的一段内存
- 字符串的尾部由
'\0'
标示,该字符的ascll码值为0 - 用指针创建字符串:下面代码中,将一个指针指向了字符串,注意,这里字符串没有被分配内存,而是被分配在代码段了。所以该字符串是只读的,若妄图以p这个指针来修改字符串,则会引起段错误
char *p = "linux";
- 用字符数组创建字符串:下面代码中,创建了一个数组来存储字符串,该字符串就和数组一样方便使用
char a[] ="linux";
- 字符串与sizeof、strlen:sizeof可以求出类型所占的字节数。strlen可以求出字符串本体长度(不包括\0)
测试:
char a[] = "123456789";//strlen(a)的值是9(不包括\0)//sizeof(a)的值是10(包括了\0)char a[5];//strlen(a)的值是随机的//sizeof(a)的值是5char a[5] ="123456789";//strlen(a)的值大于等于5,数组初始化时多出来的字符会被截掉,但是第五个字符后面的栈是脏的,字符串不一定在这里停止//sizeof(a)的值是5char *p = "123456789";//strlen(p)的值是9(不包括\0)//sizeof(a)的值是4(仅仅指针的大小)
0 0
- c语言的数组与字符串
- C语言--数组与字符串
- c语言数组与字符串
- C语言 数组与字符串
- C语言中,指针字符串与数组字符串的区别
- c语言字符数组与字符串的使用详解
- C语言字符串指针变量与字符数组的区别
- C语言字符串指针变量与字符数组的区别
- [C语言]字符数组与字符串的使用详解
- c语言字符数组与字符串的使用详解(转)
- c语言字符数组与字符串的使用详解
- c语言字符数组与字符串的使用详解
- c语言字符数组与字符串的使用详解
- c语言字符数组与字符串的使用详解
- C语言字符数组与字符串的使用详解
- c语言字符数组与字符串的使用详解
- c语言字符数组与字符串的使用详解
- C 语言中指针、字符串与数组的一些关系
- Octotree实用工具推荐GitHub/GitLab 代码结构浏览插件
- java平台的编码问题 getByte()所用编码
- Mouse Hook
- 打印分别由signed和unsigned限定的char , short, int ,与long类型变量的取值范围。
- ORACLE 11g 高可用Data Guard在线降级详细过程
- c语言的数组与字符串
- linux配置java环境变量(详细)
- 字典树
- 利用BP神经网络教计算机进行非线函数拟合
- beyesi
- 软件开发标准流程
- MultipartFormDataMemoryStreamProvider修正以支持非IIS宿主的情况
- 安装配置opensips过程记录
- opencv基本操作(二)