zoukankan      html  css  js  c++  java
  • 字符串指针的理解

    回忆一波字符串指针,主要是因为最近复习到了C++的内容,如果有些错的地方大家希望可以指出,我们共同进步。

     1 #include <stdio.h>
     2 #include<iostream>
     3 
     4 using namespace std;
     5 
     6 void main(){
     7      
     8     char* p1 = "hello";
     9     char* p2 = "world"; 
    10     char* p3 = "!!";
    11     //char* a[] = {p1,p2,p3};
    12      char* a[] = {"hello","world","!!"}; 
    13      
    14      char** p;
    15      p = a;   
    16      p++;
    17      cout << *p<<endl;
    18      cout << **p<<endl;
    19 }
    //强行解释一波,对指针还是有点模糊,所以翻起以前的内容看看,小结一下
    数组a其实就是一个字符串数组,a此时是数组名,就存储了(不能说指向了,因为数组名不是指向)hello字符串的首地址(我们常常说指针指向一块内存,
    其实就是指向它的首地址,例如int i = 10; int* p =&i; p指向了i这个int变量的首地址),这里是数组名,所以就是存储可它的首地址,
    a数组里面存的都是一个字符数组。每个字符数组的数组名存的都是字符串的首地址。*a 就是取a所存地址对应的值,就是 “hello”了,p指向了a ,
    于是p也获取到了hello这个字符串的首地址,*p就是 “hello” 了,**p就是hello这单独一块内存的首地址了,就是h这个字符了。
    对应的内存模型:

    注意:------------------数组名不是指针,而是一个地址常量,可以使用指针操作地址,进而操作数组,当数组名++时,此时的数组名就类似于指针。
  • 相关阅读:
    2016孤独重视
    什么时候有空写一篇影评 《含泪活着》
    登录页面总结
    心跳机制
    心跳机制详解
    mysql数据库字符编码修改
    mysql20170404代码实现
    2017全面JAVA面试经历总结
    Oracle经典入门教程
    MySQL基础教程-绝对推荐
  • 原文地址:https://www.cnblogs.com/liuzeyu12a/p/10512613.html
Copyright © 2011-2022 走看看