本帖最后由 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[0];
p[0] = p[3];
p[3] = t;
t = p[1];
p[1] = p[2];
p[2] = t;
return 0;
}
逆向学习第15天_指针学习
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[0];
p[0] = p[1];
p[1] = s;
printf("%x", i);
return 0;
}
逆向学习第15天_指针学习
3、正常情况下,我们无法对一个整数的数组一次性输入所有数值。
为了解决这问题,可以先输入包含多个至格作为间隔的连续数字,通过gets函数一次性接收下来。
将输入的字符串循环调用strtok函数进行拆分,把拆分后的小字符事转化为数学,再打印“你输入了x个数字,这些数字的平均值是:xxx
int a[10];
char s[100];
printf(”请随意输入1到10个整数:[以空格间隔]");
gets(s);
while
(..).strtok
(strtok函数的用法要自己根据ISDN说明和例子自己研究明白)
//3、正常情况下,我们无法对一个整数的数组一次性输入所有数值。
//为了解决这问题,可以先输入包含多个至格作为间隔的连续数字,通过gets函数一次性接收下来。
//将输入的字符串循环调用strtok函数进行拆分,把拆分后的小字符事转化为数学,再打印“你输入了x个数字,这些数字的平均值是:xxx
//int a[10];
//char s[100];
//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[10];
char s[100];
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;
}
逆向学习第15天_指针学习
(int)与atoi的区别:
(int)只针对某一个元素进行转换,且遇到double、float时,只保留整数位
atoi是对整个进行元素类型转换的
逆向学习第15天_指针学习
|