美文网首页
char * 的疑问

char * 的疑问

作者: 安东可 | 来源:发表于2018-06-27 15:09 被阅读22次

在使用char* 传递参数的时候,以为char* 传递的是指针;

#include <iostream>
#include<string>
#include <cstring>
#include<vector>

using namespace std;


void printNoref(char * s){
    cout<<"非引用传值函数中s 地址:"<<&s<<endl;
    cout<<"s 指向的地址:"<<(int*)s<<endl;
    s++;
    cout<<"str:"<<s<<endl;
}


void printref(char *& s){
    cout<<"非引用传值函数中s 地址:"<<&s<<endl;
    cout<<"s 指向的地址:"<<(int*)s<<endl;
    (s)++;
    cout<<"ref str:"<<s<<endl;
}



int main() {
    string s ( "123456789");
    char* str = new char[s.size() + 1];
    strcpy(str, s.c_str());
    
    // 真实地址
    cout<<"真实 str 地址:"<<&str<<endl;
    cout<<"str 指向的地址:"<<(int*)str<<endl;  
    
    
    //非引用传值
    printNoref(str);
    cout<<"str 指向的地址:"<<(int*)str<<" 值 str:"<<str<<endl;
    cout<<"================"<<endl;
    
    // 引用传值
    printref(str);
    cout<<"str 指向的地址:"<<(int*)str<<" 值 str:"<<str<<endl;
    


    return 0;
}

结果:

真实 str 地址:0x7ffcf092ee08
str 指向的地址:0x1481c20
非引用传值函数中s 地址:0x7ffcf092ede8
s 指向的地址:0x1481c20
str:23456789
str 指向的地址:0x1481c20 值 str:123456789
================
引用传值函数中s 地址:0x7ffcf092ee08
s 指向的地址:0x1481c20
ref str:23456789
str 指向的地址:0x1481c21 值 str:23456789
  • char * s传递的是s地址中存储的指针地址的复制,
  • char*& s传递的是指向s真实地址的指针;

相关文章

  • char * 的疑问

    在使用char* 传递参数的时候,以为char* 传递的是指针; 结果: char * s传递的是s地址中存储的指...

  • 无标题文章

    char * strcopy(char * a,char * b){ char * c = a; wh...

  • char [] 和 char*

    作者按:无参考价值。 今天在看紫书时候,发现作者在WERTYU题目和Palindrome题目中定义了以下三个变量:...

  • C | char* and char[]

    char[] 就是普普通通的字符数组char* 却是王子一般的字符指针你如果把一个字符串赋值给char* 类型的...

  • char和char *

    星号 * 和取地址符&的关系 1.星号 * 代表一个内存地址,是一个数字 ,说明这个变量是个指针。比如 char ...

  • char *与char[]的区别

    **统一为英语单词的词序常量指针(pointer to const)才是const int *p = 0;指针常量...

  • char * 和char[]的区别

    如下代码块char pngPath[10]; 在下面的sprintf函数中报错了但是char *pngPath可...

  • char * 和 char []的区别

    区别: 1:char* s1=”abc”;s1是一个指针,s1所指向的地址的内容是不可改变的,但是s1可以指向其他...

  • char* he char [] 的区别

    [C] char a[] 和 char *p 的区别 原文:https://blog.csdn.net/ftell...

  • SQL笔记之concat特性

    concat(char1,char2,char3);当char1或char2、char3为null,则拼接之后的字...

网友评论

      本文标题:char * 的疑问

      本文链接:https://www.haomeiwen.com/subject/wolbyftx.html