• c字符指针与字符数组的区别


    1.定义

    char *pchar;  //定义了指针,没赋值之前不能使用。如果:printf("*pchar:%c ",*pchar); 出现段错误Segmentation fault (core dumped)

    gcc 中pchar 指向了0这个虚拟地址空间。显然个空间并没有物理地址映射。

    char arrchar[10]; //分配了空间

    #include <stdio.h>
    void main()
    {
    	char *pchar;
    	char achar[10];
    	printf("pchar: %x
    ",pchar);	
    	printf("&pchar: %x
    ",&pchar);	
    	printf("&pchar[0]: %x
    ",&pchar[0]);	
    //	printf("*pchar:%c
    ",*pchar);Segmentation fault (core dumped)
    	printf("ppchar: %p
    ",pchar);	
    	printf("achar: %x
    ",achar);	
    	printf("&achar: %x
    ",&achar);	
    	printf("&achar[0]: %x
    ",&achar[0]);	
    	printf("pachar: %p
    ",achar);	
    }
    

      

    结果:

    pchar: 0
    &pchar: 69a39e98
    &pchar[0]: 0
    ppchar: (nil)
    achar: 69a39e80
    &achar: 69a39e80
    &achar[0]: 69a39e80
    pachar: 0x7fff69a39e80

    注意:&pchar 和pchar  和pchar[0] 和pchar+0 之间的区别   后三个其实是等价的。

    内存分布

    2.定义的时候初始化

    char *p = "hello"; //p指向了一个常量字符串( 代码区--只读) 因此不可改变 *p='a'//报错 但可以p = "world";

    char arr[10] = "hello"; //可以改变arr[0] = 'a'

     对于数组

    不可以这样:

    char arr[10];
    arr = "hello";

    应该 strcpy(arr,"hello");

  • 相关阅读:
    $.ajax
    es6--之箭头函数
    vuex相关知识点
    grunt---grunt_test 测试用例
    git2--常用命令
    git命令
    百万程序员的苦恼-选择VB.NET还是C#
    在Linux上运行C#
    C#中的cookie编程
    C#编程让Outlook乖乖交出帐户密码
  • 原文地址:https://www.cnblogs.com/andyhe/p/3199494.html
Copyright © 2020-2023  润新知