C语言语法入门-字符串和指针
字符串和指针
用数组实现的字符串和用指针实现的字符串
代码清单11-1
1 | /*程序名:list1101.c*/ |
用数组实现的字符串和用指针实现字符串的不同点
代码清单11-2
1 | /*程序名:list1102.c*/ |
代码清单11-3
1 | /*程序名:list1103.c*/ |
案例1:是将常量区域的 “ABC” 传给数组 s[],而 s 是指针,常量是无法直接改写指针。
案例2:是传递 “123” 常量的指针到 char* p,后面把 char* p 的值改为 “456” 常量的指针。所以可以输出不同的值。
字符串数组
代码清单11-4
1 | /*程序名:list1104.c*/ |
反汇编
1 | printf("a[%d] = \"%s\"\n", i, a[i]); |
首先数组 “a[][5]” 表示每个字符串分配 5 字节的空间,因此第一个汇编代码的常量是5。i*5 表示以5字节为基准增加指针,”[ebp-24h+eax]” 每次循环加5字节。
1 | printf("p[%d] = \"%s\"\n", i, p[i]); |
“[ebp-38h]”:表示数组指针 p 的地址,而数组 p 中存储的是各字符串 “PAUL”、”X”、”MAC” 的指针。”[ebp-38h+i*4]” 表示根据循环次数,取指针数组中的各字符串的指针。
通过指针操作字符串
判断字符串的长度
代码清单11-5
1 | /*程序名:list1105.c*/ |
字符串的复制
代码清单11-6
1 | /*程序名:list1106.c*/ |
不正确的字符串复制
代码清单11-7
1 | /*程序名:list1107.c*/ |
字符串处理相关的库函数
strlen 函数
代码清单11-8
1 | /*程序名:list1108.c*/ |
strcpy 函数、strncpy 函数:复制字符串
代码清单11-9
1 | /*程序名:list1109.c*/ |
strcat 函数、strncat 函数:连接字符串
代码清单11-10
1 | /*程序名:list1110.c*/ |
strcmp 函数、strncmp 函数:比较字符串的大小关系
代码清单11-11
1 | /*程序名:list1111.c*/ |
atoi 函数、atol 函数、atof函数:转换字符串
代码清单11-12
1 | /*程序名:list1112.c*/ |
总结
1 | /*程序名:summary.c*/ |
练习
练习11-1
1 | /*程序名:lx11-1.c*/ |
p = “456” + 1:表示将常量 “456” 的指针加1 ,传输到指针变量p中。
练习11-2
1 | /*程序名:lx11-2.c*/ |
练习11-3
1 | /*程序名:lx11-3.c*/ |
练习11-4
1 | /*程序名:lx11-4.c*/ |
练习11-5
1 | /*程序名:lx11-5.c*/ |
练习11-6
1 | /*程序名:lx11-6.c*/ |
练习11-7
1 | /*程序名:lx11-7.c*/ |
练习11-8
1 | /*程序名:lx11-8.c*/ |
练习11-9
1 | /*程序名:lx11-9.c*/ |
练习11-10
1 | /*程序名:list0911.c*/ |
对于浮点数的转换有点麻烦,这里直接忽略。
- 本文标题:C语言语法入门-字符串和指针
- 本文作者:9unk
- 创建时间:2023-07-12 15:21:00
- 本文链接:https://9unkk.github.io/2023/07/12/c-yu-yan-yu-fa-ru-men-zi-fu-chuan-he-zhi-zhen/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!