美文网首页计算机二级
每日一题 | C语言指针练习 一

每日一题 | C语言指针练习 一

作者: C语言Plus | 来源:发表于2019-10-16 14:58 被阅读0次

看题:分析下列C语言代码,解释出现结果的原因!

#include<stdio.h>

int main()

{

char a[20] = { "You_are_a_girl" };

printf("%s\n", a);

int* ptr = (int*)a;

ptr += 2;

*ptr = 'abcd';

for (int i = 0; i < 20; i++)

{

printf("%c", a[i]);

}

getchar();

}

这是运行结果

结果

解析:

1、int* ptr = (int*)a;这条语句的作用是,把a强转为int型指针,并赋值给ptr。

2、ptr += 2;这条语句的作用是,使ptr指针走两步,而ptr是int型指针,所以步长是4字节,走两步就是8字节。每个字母一个字节,意思就是走过了八个字符,ptr现在指向了第二个a字母。You_are_a_girl

3、*ptr = 'abcd';这句话是最难理解的吧,应该。*ptr是整数,整数是四个字节,看后面的值abcd正好四个,每个占一个字节(大家看看ascii表,看下对应的二进制)01100001 01100010 01100011 01100100这就是理论的内存存储的二进制数,八个位(一个字节)存一个字母,分别是a,b,c,d

4、经过上面的分析,对于输出基本没什么问题,最大的问题就是为什么abcd会是逆序输出的。这是因为对于跨越多个字节的数据类型(比如 int 长 4 个字节),如何在内存中对这些字节进行排序有两种常见的方法:大端法(Big-endian)和小端法(Little-endian)。具体的就不在这里解释了,想了解的自行科普

更多学习资料,学习题目可以加群479478422,还有群主免费解答哦

相关文章

  • 每日一题 | C语言指针练习 一

    看题:分析下列C语言代码,解释出现结果的原因! #include int main() { chara[20] =...

  • C语言05- 指针

    C语言05- 指针 13:指针 指针是C语言中的精华,也是C语言程序的重点和难点。 13.1:指针定义与使用 指针...

  • C语言指针总结大学霸IT达人

    C语言指针总结大学霸IT达人 C语言的指针是C语言区别其它语言的最主要的特定之一。有了指针,C语言就可以抛开所有束...

  • Mr_二狗[自修+总结杂记]指针概念复习

    学习C语言最难学的就是指针!多练习,多思考! 练习一: #include int calc(int x) { x ...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • 带小白学C语言指针

    C语言里指针才是C语言的开始和指针;C语言里基本所有东西都是由指针演变而成; 指针是指向地址的变量,类型就是指针...

  • [Swift]结构体指针操作

    C语言的指针操作 在c语言中申明一个变量并通过指针修改该变量的值 a value is 2 c语言操作结构体指针操...

  • [初学C++]浅谈C C++引用和指针的联系和区别

    为什么C/C++语言使用指针? ①一方面,每一种编程语言都使用指针。不止C/C++使用指针。每一种编程语言都使用指...

  • 在Swift中使用C语言的指针

    在Swift中使用C语言的指针 在Swift中使用C语言的指针

  • 2018-06-05

    C语言指针教程 (一)什么是C语言指针指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。...

网友评论

    本文标题:每日一题 | C语言指针练习 一

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