首页 相关文章 对于c/c++中指针学习的两个绝好的例子

对于c/c++中指针学习的两个绝好的例子

对于众多人提出的c/c++中指针难学的问题做个总结:

指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*指针运算符的作用,假设定义了一个指针变量x,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout *x"|"x;,当定义了int *x;后对x=&a的理解的问题。仔细阅读和联系下面的两个例子我想指针问题就不是难点了!

/*程序作者:管宁
站点:www.cndev-lab.com
所有稿件均有版权,如要转载,请务必著名出处和作者*/

#include stdio.h

main()
{
int a,b; /* 定义a,b两个整形变量用于输入两个整数 */
int *point_1,*point_2,*temp_point; /* 定义三个指针变量 */
scanf("%d,%d",&a,&b); /* 格式化输入a,b的值 */
point_1=&a; /* 把指针变量point_1的值指向变...[ 查看全文 ]

2016-02-19 标签:
  • 第一个: ------------------------------------------------------ 代码如下: #include stdio.h #include string.h void tell_me(int f(const char *, const char *)); int main(void) {    tell_me(strcmp);    tell_me(main);    return 0; } void tell_me(int f(const char *, const char *)) {    if (f == strcmp) /* -----我不理解这里*/   &nb...[ 查看全文 ]
  • 先看下面的程序: 代码如下: void main() {     int a = 100;     int *ap = &a;     printf("%p\n",&a);//输出:002AF744     printf("%p\n",ap);//输出:002AF744     printf("%d\n",*ap);//输出:100     printf("%p\n",&ap);//输出:002AF738     printf("%p\n",&*ap);//输出:00...[ 查看全文 ]
  • 有了之前的基础,此文只是把一些以前没有注意到的和值得学习的知识做一个记录。 第一章 作者认为使用#if 0 .... #endif比用/*和*/好,因为后者不能嵌套。但是对于//并没有说明。 第二章 三字母词,用两个问号加一个符号表示另一个符号,比较类似于转义字符。查阅了一些资料,它的使用与编译器有关,了解即可,防止字符串常量被错误的解释。 代码如下: ??( == [ ?? == { ??...[ 查看全文 ]
  • 这可不是我写的,我只是看到觉得不错,才贴的哦。 : 不要以为这个题目是耸人听闻,但就目前的形势来看c/c++是需要退出舞台或者说的婉转一点是需要更新换代了. 我想在未来的一两年里,作为程序员等级评判的标准之一c/c++(不管是mfc还是bcb)将会让位给三种编程语言,1.sun的java2.windows平台上的c#3.xml 为什么这么说呢,我认为最大理由是目前的应用程序正在从基于独立的操作系统,传向基于internet平台. 我...[ 查看全文 ]
  • 对于数组和多维数组的内容这里就不再讨论了,前面的教程有过说明,这里主要讲述的数组和指针类型的关系,通过对他们之间关系的了解可以更加深入的掌握数组和指针特性的知识! 一个整数类型数组如下进行定义 int a[]={1,2,3,4}; 如果简单写成 a;//数组的标识符名称 这将代表的是数组第一个元素的内存地址,a;就相当于&a[0],它的类型是数组元素类型的指针,在这个例子中它的类型就是i...[ 查看全文 ]
  • 计算原理是先求出每个日期距离1年1月1日的天数差值,再进一步做差即可。 代码如下: #include stdio.h struct MyDate {  int year;  int month;  int day; }; int GetAbsDays(MyDate x) {  int i;  int month_day[] = {31,28,31,30,31,30,31,31,30,31,30,31};  int year = x.year-1;  // 因为欲求距离1年1月1日的距离  int days = year * 365 + year/4 - year/100...[ 查看全文 ]
  • 一、C++头文件究竟是什么,你怎么看? 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(像linux等系统以“.cc”或“.cxx”为后缀)。简而言之,就是用于声明的文件。 ...[ 查看全文 ]
  • /*p129*/#include class CComplex{public: CCpomplex(double r=0,double i=0) { realPart=r; imagePart=i; } void print() { cout /*p129*/#include class CComplex{public: CCpomplex(double r=0,double i=0) { realPart=r; imagePart=i; } void print() { cout[ 查看全文 ]
  • 介绍一个专门处理C++异常的类 作者:PJ Naughter 下载源代码和例子 简介: CExceptionLogger ,是一个可以免费使用的C++类,用它可以截获未处理异常,如:非法存取、栈溢出、被零除等,并可以将异常详细信息记录到日志文件。这个类源自于MSDN Magazine 2002年3月的一篇专栏文章“Under the H...[ 查看全文 ]
  • 一直不赞成把用户体验精英化,所谓的用户体验就是研究 普通用户 在使用产品中遇到的问题,这里的普通用户是指你的最大目标用户群体,他们可能很高端、也可能非常低端,这是用户研究中间常常会陷入的误区。 用户体验也没有那么高深,其实就是从用户的角度去体验产品、发现问题,一个熟练使用互联网的小学生、农民工都能完成,从这个角度来说用户体验可以融合进产品测试的部分,产品测试不仅要测试产品功能,...[ 查看全文 ]
  • 数据在内存的存放有以下几种形式 1.栈区--由编译器自动分配并且释放,该区域一般存放函数的参数值,局部变量的值等, 2.堆区--一般由程序员分配释放,如果程序员不释放,程序结束的时候才会被操作系统回收, 3.寄存器区--用来保存栈顶指针和指令指针 4.全局去--也是静态区,全局变量和静态变量都是存储在一起的,初始化的全局变量和静态变量都存储在一块,为初始化的全局变量和静态变量在相邻的另一个区...[ 查看全文 ]
  • 这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销! #include < iostream     #include < string     using   namespace  std;        void  print_char( char * array[]); //函数原形声明        void   main ( void )&nb...[ 查看全文 ]
  • 埋头苦干一天终于搞定!一个用C#写的windows应用程序,作用嘛,就是对asp程序已知的20种漏洞进行扫描,显示源程序。在这个应用程序中用到两种获得http页面的方法,一种是直接用httpwebrequest类,而另一种是同服务器通过tcp/ip建立socket连接,直接查询端口80 , 为此我写了以下两个函数,第一个比较简单,参数只有一个,就是要求的url , 另外一个比较复杂,也很通用,不仅可以请求http页面,还可以和其他端口...[ 查看全文 ]
  •      智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷...[ 查看全文 ]
  • 1:常量指针与指针常量 常量指针与指针常量名字很接近,但是两者区别很大。 常量指针是指指向常量的指针,例如:char const *st[4]="str";或者使用下面的方法,效果是一样的:const char *st[4]="str"; 它声明了一个指针变量,这个指针指向了一个常量字符串,但是由于指向的内存空间是常量,因此该地址的内容是不能修改的,例如:*st="no"; //这是不行的,因为内存空间的内容不能修改st="ok"; //这是可...[ 查看全文 ]
  •     我们知道, C#的语法与C++非常相似,实现从C++向C#的转变,其困难不在于语言本身,而在于熟悉.NET的可管理环境和对.NET框架的理解。     尽管C#与C++在语法上的变化是很小的,几乎不会对我们有什么影响,但有些变化却足以使一些粗心的C++编程人员时刻铭记在心。在本篇文章中我们将讨论C++编程人员最容易犯的十个错误。 陷阱1: 没有明确的结束方法 几乎可以完全肯定...[ 查看全文 ]
  • 首先是引用情形下的c++源码: 代码如下: void add(int a, int b, int&c) {     c = a + b; } int main() {     int a = 1;     int b = 2;     int c = 0;     add(a, b, c); } 下面是main对应的汇编码: 代码如下: ; 6    : int main() {     push    ebp  &...[ 查看全文 ]
  • <C++实践系列C++中的引用(reference) 作者:张笑猛 提交者:eastvc 发布日期:2003-11-22 14:44:07 原文出处:http://objects.nease.net/ 1.简介 2.引用的语法 3.引用使用技巧     3.1 引用和多态     3.2 作为参数     3.3 作为返回值     3.4 什么时候使用引用 4. 参考资料 1.简介     引用是C++引入的新语言特...[ 查看全文 ]
  • <C++实践系列C++中的异常(exception) 作者:张笑猛 提交者:eastvc 发布日期:2003-11-22 14:40:53 原文出处:http://objects.nease.net/ 1.简介   1.1常用的错误处理方式   1.2 不常用的处理方式   1.3 异常 2. 异常的语法   2.1 try   2.2 catch   2.3 throw   2.4 函数声明 3. 异常使用技巧   3.1 异常是如何工作的     3.1.1 unwind...[ 查看全文 ]
  • 1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。 2. C++/CLI 和 C# 是微软的,它们与C和C++没有任何关系,虽然部分语...[ 查看全文 ]
手机页面 收藏网站 回到头部