首页 > 其他分享 >二进制翻转、结构体指针

二进制翻转、结构体指针

时间:2024-06-13 21:46:41浏览次数:24  
标签:ch apple 二进制 成员 char ++ 地址 翻转 指针

试写一个函数,传入一个参数unsigned char num,把num按位进行整个数值翻转。规则:使用位运算,不能另外使用变量存储,写出最优的方案。例:num二进制为10010111; 翻转后 num二进制是11101001

unsigned char reverseBitsChar(unsigned char ch)
{
    ch = (ch & 0x55) << 1 | (ch >> 1) & 0x55;
    ch = (ch & 0x33) << 2 | (ch >> 2) & 0x33;
    ch = (ch & 0x0F) << 4 | (ch >> 4) & 0x0F;
    return ch;
}
#include<stdio.h>
struct st
{
      int n;
      int *m;
}*p;

void main()
{
    int d[5]={10,20,30,40,50};

    struct st arr[5]= {100,d,200,d+1,300,d+2,400,d+3,500,d+4};
    
    p=arr;
    
    printf("%d\t",++p->n);
    
    printf("%d\t",(++p)->n);
    
    printf("%d\n",++(*p->m));
}

A.101 200 21

B.101 20 30

C.200 101 21

D.101 101 10
/***********************************************************************    
    keys:结构体指针p指向结构体数组arr,结构体数组中有5个结构体,其中,成员d为数组d中“10”这个成员的地址,成员d+1是数组d中“20”这个成员的地址,成员d+2是数组d中“30”这个成员的地址,成员d+3是数组d中“40”这个成员的地址,成员d+4是数组d中“50”这个成员的地址。
 
 ++p->n    :指针p得到地址下面的值也就是100,前缀++之后,得到101。由于结构体内有2个元素,所以*m指向的是成员“d”。
 
 (++p)->n  :指针p先++,偏移一个单位,此时,p指向成员“200”的地址,再得到地址下面的值也就是200。
 
 ++(*p->m) :*p->m得到的是成员“d+1”这个地址下的值为20,由于前++,所以等于21。
 
 选择选项A.
**********************************************************************/       

以下说法正确的是:A

A.字符串至少占用1个字节

B.空串不占用内存

C.在char *p = NULL 中,p被称为空指针,不占用内存

D.在char *s[ ] = "apple" 中,s里面存放了字符串"apple",占用了6个字节(含'\0')

keys:
在char *s[ ] = "apple"中,s是一个字符指针数组,s里面存放的是字符串"apple"的首字符'a'的地址,而不是直接存放整个字符串"apple"。整个字符串"apple"实际是存放在其他内存区域中的。

标签:ch,apple,二进制,成员,char,++,地址,翻转,指针
From: https://www.cnblogs.com/hhail08/p/18246799

相关文章

  • 6.12.双指针专题
    27.移除元素题意描述:给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回nums中与val不同的元素的数量。假设nums中不等于val的元素数量为k,要通过此题,您需要执行以下操作:更改nums数组,使nums的前k个......
  • 032指针学习—引用字符串
    目录1.字符串的引用方式(1)两种方法(2)举例(3)注意事项2.字符指针作函数参数(1)说明(2)举例(3)注意事项3.用字符指针变量和字符数组的比较1.字符串的引用方式(1)两种方法        用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格......
  • C语言指针介绍加练习
    #指针相关介绍定义    指针(Pointer),通常用于数据的间接访问,指针存储的是指向变量的首地址,16位平台就是2位,如果在32位平台,地址就是4个字节,如果实在64位平台,地址就是8个字节(1Byte=8bit),Int类型4Byte char类型1Byte这个是变量在内存中,分配的地址大小,在内存中一个By......
  • 指针和数组-1
    目录1、指针的算术运算指针加上整数:指针减去整数:两个指针相减:2、指针用于数组处理1.访问数组元素:2.遍历数组:3.修改数组元素:​ 4.传递数组到函数:​5.动态内存分配(先了解后面章节会详解):3、指针比较1.检查两个指针是否相等2.检查一个指针是否在另一个之前或之后......
  • 在Linux中,如何将二进制文件添加到 $PATH 变量中?
    在Linux系统中,$PATH是一个环境变量,它定义了操作系统在执行命令时搜索可执行文件的目录。要将一个二进制文件添加到$PATH中,你可以按照以下步骤操作:找到二进制文件的路径:首先,你需要知道二进制文件的确切位置。使用which命令或者find命令来查找文件的位置。例如:whichyou......
  • Go语言什么时候该使用指针 与 指针使用分析
    Go语言什么时候该使用指针与指针使用分析原创 疯子 Go语言圈 2024-06-1208:31 广东Go语言圈Go语言开发者的学习好助手,分享Go语言知识,技术技巧,学习与交流Go语言开发经验,互动才有助于技术的提升,每天5分钟,助你GO语言技术快乐成长161篇原创内容公众号......
  • CH07_指针
    CH07_指针指针的基本概念作用:可以通过指针间接访问内存描述:内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址指针变量的定义和使用语法:数据类型*变量名;示例:#include<iostream>usingnamespacestd;intmain(){ inta=10; //定义......
  • Python项目打包二进制文件并发布
    复制项目生成二进制文件(交叉编译???)重命名二进制文件生成pyi文件(编译器智能提示需要删除原始py文件(复制后的)项目打包上传(分版本分平台???)流程、代码待完善二进制文件生成pipinstallcpython#setup.pydeffind_pyx_files(directory):pyx_files=[]forroot,_......
  • C语言指针(函数指针的深入)
    在函数指针进阶中初步接触了函数指针现在来深度学习一下我们来分析两个题目加深一下对函数指针的理解例1:(*(void(*)())0)();分析这个函数的作用是什么?看到这段语句这么长是不是觉得很难,在我分析了之后就会变得非常简单分析之前我们先讲解一下C声明的组成任何C变量的声......
  • 【C语言】写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换
    思路:10的二进制是00000000000000000000000000001010,然后交换奇数位和偶数位那么就是第一位和第二位交换,第三位和第四位交换,以此类推解题步骤:(1)将00000000000000000000000000001010的奇数位保留,偶数位变为0则变成00000000000000000000000000000000(2)将00000000000000000000......