美文网首页C语言C语言C++编程
计算机编程C语言指针答疑:字符串指针和字符数组

计算机编程C语言指针答疑:字符串指针和字符数组

作者: 368b2befcaed | 来源:发表于2019-07-23 15:46 被阅读1次

一、【计算机编程】【C语言指针试题】

有下面四个C程序代码语句:

char array1[] = "I love C";

char array2[] = "I love C";

char *pChar1 = "I love C";

char *pChar2 = "I love C";

printf("array1 == array2吗? %d\\n", array1 == array2);

printf("pChar1 == pChar2吗? %d\\n", pChar1 == pChar2);

请问两条C程序printf语句会输出什么?

二、【计算机编程】【C语言指针答疑】

1、“己他”概念来解题

这道C语言指针题考察了字符数组、常量字符串、指向字符的指针等知识点,看上去让人“眼花缭乱”。使用我提出的C语言指针“己他”中的“己值”、“他址”概念以及“指针运算”来解这道题是很简单的,这些概念在我的专栏:

的第九章、第十章、第十三章有详细的阐述,如下:

第九章:

第十章:

第十三章:

2、C程序代码

我来把这道C语言指针题扩展成一段C程序代码,如下:

C程序代码

这段C程序代码我定义了两个字符数组array1和array2,各自保存了一个字符串"I love C",紧接着又定义了两个指针变量pChar1、pChar2,指向两个字符串"I love C"。运行结果如下:

C程序运行结果

这个结果就是上述C程序试题答案。

3、C程序代码分析

3.1 分析1

在C程序代码的第5行和第6行有如下语句:

两个字符数组虽然保存的字符串看上去是一样的,都是"I love C",其实这两个字符串在内存中位于不同的位置。

从运行来看,字符数组array1的第一个元素地址是22feaf,而数组名array1的己值也是22feaf。我在专栏中提到过,数组名array1这种C代码写法就是第一个元素的地址,也就是说array1的己值22feaf这个数字的含义就是“他址”,他人(array1[0])的地址。

从运行来看,字符数组array2的第一个元素地址是22fea6,而数组名array2的己值也是22fea6,也就是说array2的己值22fea6这个数字的含义就是“他址”,他人(array2[0])的地址。

C程序代码第17行如下语句:

这种C程序代码写法就是用指针变量的己值做比较运算。array1的己值是22feaf,array2的己值是22fea6,它们相等吗?当然不相等,所以输出:0!

3.2 分析

在C程序代码的第7行和第8行有如下语句:

两个指针变量指向的字符串看上去是一样的,都是"I love C",而且这两个字符串就是同一个,也就是说在内存中位于一个位置,这就是常量字符串!

从运行来看,指针变量pChar1的己值是404000。我在专栏中提到过,指针变量pChar1的己值就是常量字符串"I love C"的第一个字符的地址,也就是字符‘I'的地址。

从运行来看,指针变量pChar2的己值也是404000,与指针变量pChar1的己值相等,这再次说明指针变量pChar1和pChar2指向的是同一个字符串。

C程序代码第18行如下语句:

这种C程序代码写法就是用指针变量的己值做比较运算。既然两个指针变量的己值相等,所以输出:1!

三、C语言指针试题总结

这道C语言指针试题看上去难吗?还是在我提出的“己他”概念范围内,所以我一直跟同学们说“C语言指针就是个纸老虎”!

相关文章

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • 计算机编程C语言指针答疑:字符串指针和字符数组

    一、【计算机编程】【C语言指针试题】 有下面四个C程序代码语句: char array1[] = "I love ...

  • 指针与数组

    基础 方法一:用字符数组定义字符串,用指针访问。 方法二:用指针定义字符串,用数组下标访问。 C语言没有定义字符串...

  • 慕课网-Linux C语言指针与内存-学习笔记

    Linux C语言指针与内存 工具与原理 指针 数组 字符串 堆内存与栈内存 gdb内存调试工具。 C语言中指针的...

  • 基础语法总结

    1.c++ .c/.mm 2013 OC第三 2.c语言字符串,使用字符数组构成,或者指针,清空指针NULL, 0...

  • C语言学习10.字符串和相关函数

    C语言中,没有string类型,有三种表现形式:字面值常量,字符串数组,字符串指针。字符串指针变量:指向字符串的头...

  • 003-Tips

    C语言字符数组与字符指针 上面这种操作是不被允许的,指针指向了 字符串常量, 不可以被修改,改成字符数组才可以 字...

  • 11.1 字符串和指针

    关于指针输出字符串 将字符串看作指针 使用指针表示法创建字符串 数组和指针的区别、数组名heart 是常量,指针名...

  • iOS开发系列文章[转]

    C语言 iOS开发系列--C语言之基础知识 iOS开发系列--C语言之数组和字符串 iOS开发系列--C语言之指针...

  • 第09天C语言(00):笔记总结

    01-指针和数组(新) 02-指针和字符串 03-指针和字符串-注意点 04-指针数组 05-指针变量作用 06-...

网友评论

    本文标题:计算机编程C语言指针答疑:字符串指针和字符数组

    本文链接:https://www.haomeiwen.com/subject/habolctx.html