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这个字符了。
    对应的内存模型:

    注意:------------------数组名不是指针,而是一个地址常量,可以使用指针操作地址,进而操作数组,当数组名++时,此时的数组名就类似于指针。
  • 相关阅读:
    通过Relect反射方法创建对象,获得对象的方法,输出对象信息
    Spring框架中获取连接池常用的四种方式
    Spring框架的七大模块
    Java线程池的四种创建方式
    递归算法
    将字符串反转的 Java 方法
    [String]split()方法
    [String] intern()方法
    案例>>>用绝对值的方法打印出菱形
    数组的简单理解
  • 原文地址:https://www.cnblogs.com/liuzeyu12a/p/10512613.html
Copyright © 2011-2022 走看看