Guido 发表于 2020-11-9 21:49:17

逆向学习第15天_指针学习

本帖最后由 Guido 于 2020-11-9 21:49 编辑

1、使用char*类型的指针变量对一个int类型的变量在4个字节上高低位按单字节交换:
例如:将int i=0x12345678,用指针char*变量进行按字节交换后变成0x78563412
//1、使用char*类型的指针变量对一个int类型的变量在4个字节上高低位按单字节交换:
//例如:将int i=0x12345678,用指针char*变量进行按字节交换后变成0x78563412
#include<stdio.h>
int main()
{
      int i = 0x12345678;
      char *p;
      int n = 2;
      p =(char *) &i;
      char t;
      t = p;
      p = p;
      p = t;

      t = p;
      p = p;
      p = t;
      return 0;
}

2、使用short*类型的指针变量对一个int类型的变量在个字节上高低位按双字节交换:
例如:将int i = 0x12345678,用指针short*变量进行按字节交换后变成:0x56781234
//2、使用short*类型的指针变量对一个int类型的变量在个字节上高低位按双字节交换:
//例如:将int i = 0x12345678,用指针short*变量进行按字节交换后变成:0x56781234
#include<stdio.h>
int main()
{
      int i = 0x12345678;
      short *p=(short *)&i;
      short s;
      s = p;
      p = p;
      p = s;
      printf("%x", i);
      return 0;
}

3、正常情况下,我们无法对一个整数的数组一次性输入所有数值。
为了解决这问题,可以先输入包含多个至格作为间隔的连续数字,通过gets函数一次性接收下来。
将输入的字符串循环调用strtok函数进行拆分,把拆分后的小字符事转化为数学,再打印“你输入了x个数字,这些数字的平均值是:xxx
int a;
char s;
printf(”请随意输入1到10个整数:[以空格间隔]");
gets(s);
while
(..).strtok
(strtok函数的用法要自己根据ISDN说明和例子自己研究明白)
//3、正常情况下,我们无法对一个整数的数组一次性输入所有数值。
//为了解决这问题,可以先输入包含多个至格作为间隔的连续数字,通过gets函数一次性接收下来。
//将输入的字符串循环调用strtok函数进行拆分,把拆分后的小字符事转化为数学,再打印“你输入了x个数字,这些数字的平均值是:xxx
//int a;
//char s;
//printf(”请随意输入1到10个整数:[以空格间隔]");
//gets(s);
//while
//(..).strtok
//(strtok函数的用法要自己根据ISDN说明和例子自己研究明白)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
      int a;
      char s;
      int i = 0;
      printf("请随意输入1到10个整数:[以空格间隔]\n");
      gets_s(s);
      char *p=strtok(s, " ");
      double sum = 0.0;
      while (p)
      {
                a = atoi(p);
                sum += a;
                p = strtok(NULL, " ");
                ++i;
      }
      printf("您输入了%d个数字,平均值是%0.2lf", i, sum/i);
      return 0;
}

(int)与atoi的区别:
(int)只针对某一个元素进行转换,且遇到double、float时,只保留整数位
atoi是对整个进行元素类型转换的

页: [1]
查看完整版本: 逆向学习第15天_指针学习