先看代码:

 #include <stdio.h>

 int main(void)
 {
     ] = ";
     char * strTmp = "abcdefg";
     int i;

     printf(]);
     printf("day is %p\n", day);

     printf("\n&strTmp is %p\n", &strTmp);
     printf(]);
     printf("strTmp is %p\n", strTmp);
     ;
 }

运行结果:

&day[0] is 0018FF40
day is 0018FF40

&strTmp is 0018FF3C
&strTmp[0] is 00422FFC
strTmp is 00422FFC

分析:

char day[7] = "1234567";  

相当于:

char day[7];

char[0] = ‘1’;

char[1] = ‘2’;

char[2] = ‘3’;

char[3] = ‘4’;

char[4] = ‘5’;

char[5] = ‘6’;

char[6] = ‘7’;

//注:  这里没有 ‘\0’

图解:

day[0]  相当于  *day     (day是char类型的指针,存放着day[0]的地址,也就是 1000H)//既然 *day == day[0]   那么day中存储的值可能是 day[0]  的地址  所以  day == &day[0]

day[1]  相当于  *(day+1)

...

day[6]  相当于  *(day+6)

分析:
char * strTmp = "abcdefg";

首先,strTmp是char类型的指针,里面存放的是 地址. 而 strTmp这个指针本身也有地址

&strTmp 就是这个指针的地址

另外,  strTmp[0]  == *strTmp

所以可以看出  strTmp存放的是 strTmp[0]的地址

所以  strTmp  == &strTmp[0]

下面是strTmp的值和地址(在vc++6.0 32位系统中测试 不同机器的结果可能不一样)

字符串的值和地址 (注意看字符串首地址 和 strTmp的值)

关于c语言中的字符数组和字符串指针的更多相关文章

  1. c语言中的字符数组与字符串

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y ...

  2. [日常] C语言中的字符数组和字符串

    c语言字符数组和字符串:1.存放字符的数组称为字符数组 char str[]2.'\0'也被称为字符串结束标志3.由" "包围的字符串会自动在末尾添加'\0'4.逐个字符地给数组赋 ...

  3. C语言中的字符数组和字符串

    在C语言中,没有字符串类型,但是可以通过字符数组来模拟字符串. 字符串可以在栈上,堆上,静态区和常量区进行分配. char buf[50]  = "abc"; char buf[] ...

  4. C语言中字符数组和字符串指针分析

    这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这 ...

  5. C语言中一个字符数组里面的所有元素变成一个字符串

    #include <string.h> int main() // 这里为了方便直接用main函数 {     char array[] = { 'h', 'e', 'l', 'l', ' ...

  6. C语言 第七章 数组与字符串

    一.数组 1.1.数组的概念 用来存储一组相同类型数据的数据结构.有点像班上放手机的手机袋,超市的储物柜. 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. ...

  7. C语言中整形数组、字符数组、字符串的区别

    一. 第一 整型数组的存放,数组最后是不加'\0'的,字符串会自动加上,因此存放字符的时候数组的大小要比实际字符的多一个 第二 整型数组 每一个单元是4个字节的,字符串是一个一个字符存放的,每个字符占 ...

  8. c语言字符数组与字符串的使用详解

    转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ ...

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

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

随机推荐

  1. Python判断是否是数字(无法判断浮点数)(已解决)

    s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小写s.isupper() ...

  2. C# 页面抓取获取快递信息

    通过页面抓取信息可以获得很多我们想要的信息,比如现在常会用到的快递查询,主要抓取的网站为http://www.kuaidi100.com/ 通过IE的网络分析我们可以得到下面信息 通过对这个网站的分析 ...

  3. Linux ls -l内容详解

    ls -l是列出当前目录下所有文件信息 以下是实例: 具体的文字描述如下: 第1字段:  文件属性字段文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号”-”,则说明该文 ...

  4. R中统计量的中英文解释

    Intercept————截距 formula————公式   Residual standard error残差标准差: 1.319 on 10 degrees of freedom 自由度为10 ...

  5. hdu 1548 A strange lift

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange lift Description There is a strange li ...

  6. Android JNI如何调用第三方库

    http://www.2cto.com/kf/201504/388764.html Android JNI找不到第三方库的解决方案 cannot load library 最近做一个jni项目,拿到的 ...

  7. EF 随机排序

    /// <summary> /// 数据上下文扩展 /// </summary> public partial class dbDataContext : IUnitOfWor ...

  8. ssh 安装

    一 ssh 1.查看ssh服务的状态 输入以下命令: sudo service sshd status 如果出现 Loaded: error (Reason: No such file or dire ...

  9. log4j打印参数

    %m   输出代码中指定的消息 %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL  %r   输出自应用启动到输出该log信息耗费的毫秒数  %c   输出所属的类目,通 ...

  10. Windows 7系统下删除开机引导项的方法

    Windows 7系统下删除开机引导项的方法: 1.使用管理员权限运行cmd,在命令行窗口使用  bcdedit 回车 2.查找description为你想删除的段,看对应的标识符是多少, 然后使用 ...