当前位置: 网站首页>小程序开发>400电话办理

沈阳网页设计-高端网站设计公司

发表日期: 2022-07-01 12:53:02 浏览次数:42

沈阳网页设计-高端网站设计公司

网站建设.png


  1. 指针的本质是变量,可以是各种数据类型,定义一个指针 "*ip",其中 "ip" 需要赋于一个地址(可以用 & 符号获取其他变量的地址再赋值给 ip),而 "*ip" 是一个具体的值,即读取地址后获得的值;

    实例代码:

    #include <iostream>using namespace std;int main(){
        int var = 20;
        int *ip;
        ip = &var;
    
        cout << "var的值:";
        cout << var << endl;
    
        cout << "变量 ip 的储存地址:";
        cout << ip << endl;
    
        cout << "指针 *ip 的值:";
        cout << *ip << endl; 
        return 0;}

    以上实例输出结果为:

    var的值:20变量 ip 的储存地址:0x7fff5e7deae8指针 *ip 的值:20
    DA北岛

       DA北岛

      195***5072@qq.com

    5年前 (2017-03-17)
  2.    silence

      256***4924@qq.com

    54

    学过C\C++,但掌握不够系统。现在温故而知新,查缺补漏,在此表达下愚见。指针应该包括两部分:指针本身,指针所指向的数据值。

    以下代码,输出指针的值和指针所指的num的值

    #include <iostream>using  namespace std;int main() {    int num = 110;    int *p = &num;    cout << p << endl;    cout << *p << endl;    system("pause");    return 0;}

    在VS2015上,调整为x64的输出结果

    000000ACBA50FAC4——110

    x86的输出结果

    0113F838——110

    楼上所说指针本质是变量,可能会对初学者造成误解。指针p本身是有值的,值可能是8字节(64位)或者4字节(32位),跟着系统和编译器来判断。

    指针p所指向变量num(操作*p)的值为110

    * 这里,参考运算符一节,是一种运算方式。不要把 *p 看做指针。

    另外,下面这篇文章提供了指针的注意规则和与常量的关系!!!与常量的关系!!!

    C++ 中常量引用、指向常量的指针、常量指针的区别

    silence

       silence

      256***4924@qq.com

    5年前 (2017-08-10)
  3.    等着黄昏看日落

      191***5050@qq.com

       参考地址

    220

    & 符号的意思是取地址,也就是返回一个对象在内存中的地址。

    * 符号的意思是取得一个指针所指向的对象。 也就是如果一个指针保存着一个内存地址,那么它就返回在那个地址的对象。

    简单点就是:&:取址。* :取值。

    等着黄昏看日落

       等着黄昏看日落

      191***5050@qq.com

       参考地址

    5年前 (2017-12-28)
  4.    lhshengshi

      510***747@qq.com

    42

    字符数组除了可以用花括号在定义时初始化外,还可以用字符串字面值初始化,但谨记字符串字面值包含一个额外的空字符

    char c1[] = {'h','e','l','l','o'};char c2[] = "hello";cout<<sizeof(c1)/sizeof(char)<<endl;  //长度是5cout<<sizeof(c2)/sizeof(char)<<endl;  //长度是6

    一个数组不能用另一个数组初始化,也不能将一个数组赋值给另一个数组

    int a[3] = {1,2,3};int b[3][3] = {{1,2,3},{1,2,3},{1,2,3}}; //rightint c[3][3] = {a,a,a};   //error

    若指针保存0值,表明它不指向任何对象。但是把int型变量赋值给指针是非法的,尽管此int型变量的值可能为0

    int a = 0;int *p1 = 0;   //rightint *p2 = a;   //error
     typedef string *pstring; const pstring cstr;

    cstr的类型是 string * const 还是 const string * ?

    答:是string *const cstr,而非 const string *cstr。容易产生误解的原因是const限定符既可以放在类型前也可以放在类型后,const pstring cstr等价于pstring const cstr。遇到此类问题时,把const放在类型之后来理解。区分:int *ip[4] 和 int (*ip)[4]第一个表示一个数组,元素是int指针第二个表示一个指针,指向int数组,遇到此类问题时,由内向外读。

    lhshengshi

       lhshengshi

      510***747@qq.com

    5年前 (2018-01-12)
  5.    箫无痕

      myl***ea@vip.qq.com

       参考地址

    36

    关于值传递,指针传递,引用传递这几个方面还会存在误区;

    值传递:

    形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。

    指针传递:

    形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作

    引用传递:

    形参相当于是实参的"别名",对形参的操作其实就是对实参的操作,在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。

    #include<iostream>using namespace std;//值传递 4  void change1(int n){
        cout<<"值传递--函数操作地址"<<&n<<endl;         //显示的是拷贝的地址而不是源地址  6   n++;
     }
     
     //引用传递10 void change2(int & n){
         cout<<"引用传递--函数操作地址"<<&n<<endl; 
         n++;
     }
      //指针传递15 void change3(int *n){
          cout<<"指针传递--函数操作地址 "<<n<<endl; 
         *n=*n+1;
      } 
     int     main(){
         int n=10;
         cout<<"实参的地址"<<&n<<endl;
         change1(n);
         cout<<"after change1() n="<<n<<endl;
         change2(n);
         cout<<"after change2() n="<<n<<endl;
         change3(&n);
         cout<<"after change3() n="<<n<<endl;
         return true;
     }
    箫无痕

       箫无痕

      myl***ea@vip.qq.com

       参考地址

    4年前 (2018-02-07)
  6.    zzq

      492***694@qq.com

    20

    C++ 中允许声明指向函数的指针,被称为函数指针。

    函数指针的声明类似于函数的声明,只不过将函数名变成了 (*指针名),定义方式如下:

    data_types (*func_pointer)( data_types arg1, data_types arg2, ...,data_types argn);

    例如:

    int (*fp)(int a);

    这里就定义了一个指向函数(这个函数参数仅仅为一个 int 类型,函数返回值是 int 类型)的指针 fp。

    函数指针在声明后就可以被指向符合条件的函数,例如:

    int a(int b);


这里就定义了一个指向函数(这个函数参数仅仅为一个 int 类型,函数返回值是 int 类型)的指针 fp。


函数指针在声明后就可以被指向符合条件的函数,例如:


int a(int b);

{

    cout<<b;

    return ++b;

}


int(*p)(int);

p=a;

在这之后,我们就可以通过函数指针来调用函数:


(*p)(5);

更多内容可参考:C++ 函数指针 & 类成员函数指针


zzq

   zzq


  492***694@qq.com


4年前 (2018-06-27)

   wind


  gfr***indom@gmail.com


24

对于理解和记忆,把多个事物共用一种方式来理解是比较省脑力的。


所以,把:


 & 符号 理解为一个方法:输入为“引用”,输出为“指针”;

 * 符号 理解为一个方法:输入为“指针”,输出为“引用”。

明白“运算符重载”的机制,应该能更好加深理解。


另外,我想是否可以认为:


 引用是高级编程语言的特性,遵循高级编程语言的约束。

 指针是低级编程语言的特性,可穿透高级编程语言的约束进行操作。

wind

   wind


  gfr***indom@gmail.com


3年前 (2019-05-23)

   空城


  473***506@qq.com


26

C++ 中指针分配与释放一个空间:


分配:


沈阳网页设计-高端网站设计公司

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878