C语言中用二维数组定义的字符串数组与用指针数组定义的字符串数组的解析与归纳
2020-07-14 05:16
225 查看
1.char a
[m]:
a. a是一个内含n个数组的数组,每个数组的大小为m字节,于是在内存中a占用了(n*m)个字节的空间
b. 数组名a具有地址含义,指向第一个拥有m个字符元素数组
注意:此时如果给a赋值,那么字符串的长度不能超过m-1
c. 和数组形式定义的字符串相同,数组形式定义的字符串数组,存储了字符串字面量的副本,可以直接对这些字符串进行更改
d. 其中每个含有m个元素的数组必须不大不小的将数组填满,如果字符串长度小于m-1,其余位置就补’\0’。
e. ps:在初始化时,m绝对不能缺省,n可以缺省
2.const char *a[m]—(const可省略)
a. a是一个内含m个指针的数组(指针就是地址)在我的电脑中,每个地址用8个字节来储存,a在计算机中占据了8m个字节的空间
b. 这表示a[i]是一个指针,指向第i个字符串
c. a[2][1]表示指针所指的第3个字符串中的第2个字符元素
d. 和指针形式定义的字符串相同,指针形式定义的字符串数组,其中的字符串字面量存储在静态存储区,所以不可以更改
e. 每一个字符串并没有固定的长度,甚至不同的字符串不必存储在连续的内存空间中
3.程序示例
/*探究指针数组和字符串数组的区别与联系*/ #include <stdio.h> #define SLEN 40 #define LIM 5 int main() { /*指针数组定义字符串*/ /*这是一个内含5个指针的数组*/ const char *mytalents[] = { "Adding number swiftly", "Multipling accurately", "Stashing data", "Following instructions to the letter", "Understanding the C language"}; /*字符串数组*/ /*内含5个数组的数组,每个数组的大小为40*/ char yourtalents[LIM][SLEN] = { "Walking in a straight line", "Sleeping", "Watching television", "Mailing letters", "Reading email"}; int i; puts("Lets compare talents."); /*%-36s的意思(推测)是之后要打印的字符串共占据36个字符位;有-代表先打印字符再打印空格,没有-则表示先打印空格再打印字符*/ printf("%-36s %-25s\n", "My Talents", "Your Talents"); for (i = 0; i < LIM; i++) { printf("%-36s %-25s\n", mytalents[i], yourtalents[i]); } printf("\nsizeof mytalents:%lld, sizeof yourtalents: %lld\n", sizeof(mytalents), sizeof(yourtalents)); return 0; }
程序输出: Lets compare talents. My Talents Your Talents Adding number swiftly Walking in a straight line Multipling accurately Sleeping Stashing data Watching television Following instructions to the letter Mailing letters Understanding the C language Reading email sizeof mytalents:40, sizeof yourtalents: 200
相关文章推荐
- C语言中,指针,引用,二维数组,指针数组,数组指针的解析
- 指针定义字符串和数组定义字符串的区别
- C语言中字符数组和字符串指针分析
- C语言中字符数组和字符串定义和初始化的问题
- 直接定义的二维数组与动态非配分配的二维数组 数组名代表的指针的一些区别
- ios开发-c语言之指针和数组以及指针和字符串的学习
- C语言之数组,字符串,指针
- 解读C语言中函数指针数组构成的复杂定义
- 二维数组、字符数组、指针数组涉及字符串和具体元素问题
- c语言字符串与数组还有指针的总结(1)
- 从C++指针定义字符串和数组定义字符串区别到C++堆和栈区别
- C语言通过指针和数组实现字符串倒序
- C语言中,指针字符串与数组字符串的区别
- C语言 指针引用字符串 以及 字符指针变量和字符数组的比较
- 理解C语言——从小菜到大神的晋级之路(8)——数组、指针和字符串
- C语言字符串指针与字符数组的区别
- 定义一个字符数组,存放100个元素,使用gets函数获取一个字符串,然后使用指针统计字符串;不知道哪里出了问题??
- c语言中指针,二维数组,一维数组,指针数组,二级指针,应用
- 在c语言学习中的问题(一):数组指针,指针数组,二维数组的理解与区分
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数