序言:
最近对C比较感兴趣(以前一直用JAVA),发现很多JAVA的特性,底层都是用的C思想实现的(比如String),打算把近期学习的整理成一个系列,因边学边写,有不妥的地方,欢迎各位看官一起讨论。
由于JAVA基本语法(数据类型、循环控制、函数(方法声明)都类似,所以不罗列这部分内容,主要讲解C与JAVA的不同点。中间会穿插一此JAVA的场景,并与此做对比。
本章介绍指针。
先看一个字符指针的例子。这个例子测试的目地是打印指针P的地址,指针P地址里面的内容,以及指针P所指向的内容。
char *p = "hello world!";
//打印指针P地址
printf("%p\n",&p);
//打印P所指向的值
printf("%s\n",p);
//打印P本身地址所存储的值,即hello world!的地址
printf("%p\n",*p);
指针本质就是一个变量(4字节),它也有地址,也会存储内容。所存储内容即为 “=” 右边的起始地址值,使用*p取值(注意与声明指针变量的差别)。如下图。
修改一下,让p重新指向另一个字符串。
char *p = "hello world!";
printf("%p\n",&p);
printf("%s\n",p);
printf("%p\n",*p);
p = "c and c++";
printf("%p\n",&p);
观察&p的值和前面的一样。证明p声明以后,其地址不会改变,改变的只是P的内容,即*p
重新声明一个变量q,其也指向hello world!。打印*q的值,发现与*p值相同。是不是与java中的一样,在java中 String a = "abc"; String b = "abc";运行时存放在字符串常量池(永久带)中,a,b所指向的地址一样。
char *q = "hello world!";
printf("%p\n",*q);
接着测试:
strcpy(p,"abc");
这里会报错误,因为企图往一个指针地址赋值abc,即*p的值0x7fff65485a00修改为abc
正确的写法为p = "abc";
再看下面这个例子。
char q[] = "hello C";
q = "abc";
这也会报错,因为q表示一个字符串常量,声明以后不允许修改。正确的赋值是使用 strcpy(q,"abc");这类似java中声明一个字符串:String q = "abc"; q的值是不允许修改,我们在做+操作时,只不过是编译时会产生另一个新的字符串,内部使用到了stringbuilder
- 大小: 7.3 KB
- 大小: 3.3 KB
- 大小: 4.1 KB
- 大小: 3.5 KB
分享到:
相关推荐
在接下来的一段时间将由我和大家一起学习游戏外挂的分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的...
在接下来的一段时间将由我和大家一起学习游戏外挂的分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的...
在接下来的一段时间将由我和大家一起学习游戏外挂的分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的...
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
学习一门新的语言肯定是要从他的基本语法开始,语法构成了整个程序设计的基础,从语法中我们也可以看到这门语言的一些特性,但是话说回来,语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度,...
注意到我的Run一栏的参数和上面的提示不一样,其实我的其他古怪参数都放到c:\lint\s td.lnt中了。请注意,不论你怎样配置参数一定不要忘记了将si-env.lnt包含在你的配置 文件里,否则就无法进行错误信息和程序的...
很多人可能或多或少知道char *a与char a[]的一些区别,但如果详细的说出来却不知如何说去,下面这篇文章就给大家详细介绍了关于C语言中char *a与char a[]的区别,有需要的朋友们可以参考借鉴,下面来一起学习学习吧...
使用ActiveX Controls ActiveX Control基础观念:Properties、Methods、Events ActiveX Controls的五大使用步骤 使用ActiveX Control:OcxTest程序 第五篇 附录 附录A 无责任书评:从摇篮到坟墓Windows的完全学习 ...
深入浅出MFC(第二版) 目录 ...附录A 无责任书评:从摇篮到坟墓Windows的完全学习 无责任书评:MFC四大天王 附录B Scribble Step 5完整原始码 附录C Visual C++5.0MFC范例程序一览 附录D 以MFC重建DBWIN
深入浅出MFC(第二版) 目录 ...附录A 无责任书评:从摇篮到坟墓Windows的完全学习 无责任书评:MFC四大天王 附录B Scribble Step 5完整原始码 附录C Visual C++5.0MFC范例程序一览 附录D 以MFC重建DBWIN