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. git 分支管理方案

    现有一般的公司项目均使用git(大多数是gitLab)管理. 开发组 我们的项目都要建立在 开发组的名下 (git.xxcompany.com/xxgroup),除需要公司内部开源的项目,都必须设置为 ...

  2. The Linux Kernel

  3. MySQL中的事件/定时任务

    转载自:http://www.cnblogs.com/chenpi/p/5137310.html 什么是事件 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行, ...

  4. iOS-WebView(WKWebView)进度条

    一直以来,就有想通过技术博客来记录总结下自己工作中碰到的问题的想法,这个想法拖了好久今天才开始着手写自己的第一篇技术博客,由于刚开始写,不免会出现不对的地方,希望各位看到的大牛多多指教.好了,不多说了 ...

  5. GPUImage源码解读之GPUImageContext

    GPUImageContext类,提供OpenGL ES基本上下文,GPUImage相关处理线程,GLProgram缓存.帧缓存.由于是上下文对象,因此该模块提供的更多是存取.设置相关的方法. 属性列 ...

  6. 为什么有时候binlog文件会很大于max_binlog_size以及max_binlog_cache_size

    问题描述 线上一个很有意思的现象,发现binlog文件大小是15G,查看了参数max_binlog_size是1073741824[1G], max_binlog_cache_size是2147483 ...

  7. GitHub Desktop 拉取 GitHub上 Tag 版本代码

    一直在使用 GitHub Desktop 图形化 git 管理工具,统一项目框架版本时需要切换到ThinkPHP Tag 分支版本,步骤如下, 1,先在 GitHub 中找到需要的版本,点进去 2,点 ...

  8. 了解jQuery并掌握jQuery对象和DOM对象的区别

    jQuery的优势: 开源--开放源代码 轻量级 强大的选择器 出色的DOM操作(对DOM元素的一个增删改查) 完善的Ajax,出色的浏览器兼容性,丰富的插件支持,完善的文档(说明书) 链式操作方式, ...

  9. form表单的一个页面多个上传按钮实例

    /* * 图片上传 */ @RequestMapping("/uploadFile") @ResponseBody public String uploadFile(@Reques ...

  10. 【saltstack 集中化管理】

    Master(监控端): Minion(被监控端) 监控: /etc/master: #interface:监控端地址 #自动接受被监控端证书 #saltstack文件根目录位置 #启动监控 被监控: ...