zoukankan      html  css  js  c++  java
  • 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");

  • 相关阅读:
    js学习笔记之标准库
    js学习笔记
    html5学习
    C#调用win32 api程序实例
    javascript计算字符串中出现最多的字符和个数
    javascript中的promise和deferred:实践(二)
    jquery animate 详解
    jquery animate stop函数解析
    javascript继承的写法
    css3 改变滚动条样式
  • 原文地址:https://www.cnblogs.com/andyhe/p/3199494.html
Copyright © 2011-2022 走看看