在做面试100题中第21题时,发现char *astr="abcdefghijk\0";和char astr[]={"abcdefghijk"};有点区别,以前一直以为是一样的,但是在该程序中采用字符串指针运行一直出错。后来在网上查查,果然发现大大的不同。 展示如何出错 分析:当你需要修改 ...
先看一段代码 字符串可以用字符指针char 字符数组等来表示。 第一个字符串使用数组开辟的,他是可以改变的量。 字符串指针变量ptr本身是一个变量,用于存放字符串的首地址。可以改变ptr使他指向不同的字符串,但不能改变ptr所指的字符串常量。因为定义指针时,编译器并不为指针所指向的对象分配空间,他只是分配指针本身的空间,所以 Hello 会被当成常量。放到.rodata区域。参考:剖析.o文件EL ...
2019-02-28 23:39 0 1911 推荐指数:
在做面试100题中第21题时,发现char *astr="abcdefghijk\0";和char astr[]={"abcdefghijk"};有点区别,以前一直以为是一样的,但是在该程序中采用字符串指针运行一直出错。后来在网上查查,果然发现大大的不同。 展示如何出错 分析:当你需要修改 ...
1错误代码 输出 原因:指针p初始值为a[0],*p是h的地址,h的地址是ascll码104,而*p+1就是105就是i了(注意*优先级高于+) --- 2正确代码(其中之一) #include<stdio.h> int main ...
函数中的数组 1. p是一个数组,是一个局部变量,说明这个函数执行完毕之后p数组中的值都被销毁了 如果单独使用p,则p表示这块数组的首地址。函数返回值按值传递是p,仅仅传递p的地址,而p数组中的内容都被销毁了。 2. 常量区的字符不能修改。 3. ...
...
功能:输入一个字符串,判断是否为回文。 主要锻炼指针的用法。 1.C版 getchar()函数依次获取一个输入,并赋给char型变量a,再通过a赋给char型数组he[]。 当输入“\n”即回车时,跳出循环。 2.C++版 strlen()取长度 ...
首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针,或者字符串数组(这里的指针变量c,系统会为其重新分配内存。 c程序示例: 1 #include <stdio.h> 2 3 int main() 4 { 5 char ...
1.在c 语言中,将字符串作为字符数组来处理,即字符数组<==>字符串。 2.首先,不论是局部,静态还是全局数组都必须在定义的时候初始化,否则就得通过其他方式,eg 循环操作,字符串处理函数strcpy() 下面通过在VS2019中运行程序来体现: 注意:不能使 ...
------------------------------------------------------------------------------------ 回顾:[C语言]指针与字符串 指针的使用: 指针的计算 ...