java基础改学C++(六)指针(1)

来源:互联网 发布:漫步者音响推荐知乎 编辑:程序博客网 时间:2024/06/06 01:08

// 指针。

#include <iostream>

#include <string>

using namespacestd;


//1. 指针的概念


//1.1 数据在内存中如何存取?

//系统根据程序中定义变量的类型,给变量分配一定的内存空间。字符型占1个字节,整型数占4个字节.....。内存区的每个字节都有编号,称之为地址

//访问有两种方式:




//重要的话说三遍:变量的地址称为指针     变量的地址称为其指针


//1.2 变量的指针与指针变量




int main(){


    int a =10;

    int * p = &a;  //&:取出a的地址

//   符号 * 在定义语句中只表示  p     指针。  理解:

(int *) p = & a ;

    

    

    

    *p = 200;//p抓住了a的地址,直接对其原值操作。就像是java里的Integer类,抓住引用

    cout<<*p<<endl;

    p++;//p里面装的是地址、指针,数组中 p++就是指向下一个元素,比如原来装的 2000H,加一后变成 2004H因为 int 4 Byte

    cout<<*p<<endl;

//    猜猜这个打印多少? 随机的!同时也造成了危险!示例:

  char buffer[3];

  const int test = 9;

    buffer[3] = 10; //这样test的值就变成10了!因为buffer没有下标3,所以直接把那个内存位置上的变量给改了!内存中buffer【3】和test 相邻存储的(因为创建的时候很近。。。)

    cout<<test; */

    这个例子也说明了 const值是可变的。(我们本意不想让它变)

//我们访问了一个内存中可能完全不了解的值,那么也能修改某个位置上的值,尽管我们不知道这个位置上的东西重要与否,但是可以修改。

    

    

   

//    补充点东西 ++ -- *都是右结合的右结合的右结合的示例

    



    //数组名就是数组的起始地址!再强调一遍,就是第一个元素的地址!




    int a1[10] = {1,2,3,45,6,7,8,96,4};

    int * p1 = a1;

    * p1 = 10;

    //这里  a11= 10

    //而且, *(a1+1) a1[1]等同。

    //注意:

    

    


    

//    Demo:用指针的操作输出数组内容

    for (p1 = a1; p1 < a1+10; p1++) {

        cout<<*p1<<"\t";

    }

    for(int i=0;i<10;i++){

        cout<<*p++<<'\t';

    }



看个demo加深理解







下面是几个关于形参与实参的demo




第二个:




//    说个题外话,下面这种情况我的编译环境就报警告了:未指定顺序。不同电脑情况不同

//    int v = 10;

//    cout<<v<<(v++);


再补充点东西









    不明白?看下面






好了,再来demo:




再来demo:






//总结:字符数组和字符指针变量都可以实现字符串的存储和运算,区别在于:

// 1. 字符数组名是常量,定义时必须指明占用的空间大小。

// 2. 字符指针变量是变量,里面存储的是字符型地址,可以整体赋值,但字符串必须以‘\0’结尾



最后做个练习巩固一下:




注意先自己写。




我是这样写的:

int main()

{

    char st1[100] ="w?o?c?a?o?a!a!a!a!a!123a!!!!";

    char st2[100];

    int m=10;

    void copy(char*p1,char *st2,int start);

    copy(st1, st2, m);

    cout<<st2;

}


void copy(char*p1,char *p2,int start){

    p1+=start;

    while((*p2++ = *p1++));

    //C++是不是比java屌啊=======灵活度太他妈高了!!

}



怎么样,这才叫C++教程。一看就懂,一学就会。







0 0
原创粉丝点击