1.定义

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

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

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

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

c字符指针与字符数组的区别的更多相关文章

  1. C语言 字符串指针和字符串数组使用区别

    字符串指针和字符串数组使用区别 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 ...

  2. C++ code:char pointers and char arrays(字符指针与字符数组)

    C-串的正确赋值.复制.修改.比较.连接等方式. #include<iostream> #pragma warning(disable: 4996)//这一句是为了解决“strrev”出现 ...

  3. 字符串赋值给字符指针(char *a="hello")的正确理解方式

    对于语句  char *a="hello"; 对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给 指针表达式"*a"所 ...

  4. c++字符指针

    对于C/C++中的 字符指针和字符数组,总是在碰到的时候无法确定而不得不现场测试,来确定末尾是否包含'\0',函数到底如何使用等等.真是劳民伤财,现在总结一下: 字符指针的赋值 (1)指向一个字符串常 ...

  5. C++字符串指针与字符数组的区别

    今天发现这样一个问题 #include <iostream> using namespace std; int main() { ]; strcpy_s(ch1,");//编译通 ...

  6. 字符数组,字符指针,字符串常量,以及sizeof的一些总结

    1.以字符串形式出现的,编译器都会为该字符串自动添加一个\0作为结尾 如在代码中写"abc",编译器帮你存储的是"abc\0". 2.数组的类型是由该数组所存放 ...

  7. Delphi的字符(Char),字符串(String),字符串指针(PChar),字符数组arrayofchar(来自http://delphi.cjcsoft.net/论坛)

    Delphi有三种类型的字符: AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉. WideChar这是2字节的Unicode字符. Char在目前相当于AnsiChar,但在De ...

  8. C语言基础复习:字符,字符数组,字符串,字符指针

    1. 概述2. 字符2.1 字符定义和大小2.2 字符的输入和输出2.3 字符的计算3. 字符数组3.1 字符数组的定义和大小3.2 字符数组的输入和输出3.3 字符数组的计算4. 字符串4.1 字符 ...

  9. sizeof数组名和字符指针是有区别的

    sizeof数组名和字符指针是有区别的. #include <stdio.h> #include <stdlib.h> void change(char url[]); int ...

随机推荐

  1. react系列(零)安装

    安装 在最初的阶段,可以使用在线编辑的网站来学习React基本的语法. 从 Hello World 开始,可以在Codepen,或者codesandbox上进行编写. 当然,也可以使用npm或者yar ...

  2. 【2017001】IList转DataTable、DataTable转IList

    IList转DataTable.DataTable转IList using System; using System.Collections.Generic; using System.Compone ...

  3. 环境配置之 Debug 和 Release - iOS

    便于开发.打包中在不同环境(测试.生产)间属性的切换更加方便便捷流畅,故创建设置此方式方法,希望对大家能有所帮助. 首先,创建 Configurations Setting File(.xcconfi ...

  4. IDEA(2018.3.2)

    N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iLCJhc3NpZ25lZU5hbWUiO ...

  5. c#随便聊聊数据库操作

    最近在学习web后台以及Python,到了程序员的转折年纪了,哎.估计很久不会写博文了.言归正传. 在原理的数据库连接池HiKari项目上.我扩展了独立的3个库,说是3个库,其实原本该是一个库.先聊聊 ...

  6. 【2018 ICPC亚洲区域赛徐州站 A】Rikka with Minimum Spanning Trees(求最小生成树个数与总权值的乘积)

    Hello everyone! I am your old friend Rikka. Welcome to Xuzhou. This is the first problem, which is a ...

  7. 安装mysql8.13用Navicat Premium链接本地数据库报2059

    推荐使用已下命令: ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 ALTE ...

  8. C# Server.MapPath的使用方法

    (1)WebForm中: HttpContext.Current.Server.MapPath("~/Files/car/"); (2)Mvc中: Server.MapPath() ...

  9. IE8 如何 不显示 选项 卡,直接在任务显示 各个页面?

    IE8  如何 不显示 选项 卡,直接在任务显示 各个页面? 在  工具->Internet 选项(o) ->常规--选项卡-设置->把第一个勾去掉  “启用选项卡浏览(需要重新启动 ...

  10. 嘿,C语言(持续更新中...)

    ---恢复内容开始--- 上次简单介绍了一下C语言,这次说说数据与计算程序,那么话不多说,进来看看. 第二章      数据与简单的计算程序 一:数据 既然说到了数据,那么说说什么是写数据呢? 表面意 ...