大佬教程收集整理的这篇文章主要介绍了c – 什么是*(uint32_t *),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
让我说我有
uint32_t* ptr; uint32_t num *(uint32_t*)(ptr + num); //what does this do? does it
这个
uint32_t* ptr;
声明类型为uint32_t的指针,但指针未初始化,即
意味着指针不指向任何地方.试图访问
通过该指针的内存将导致未定义的行为和您的程序
可能会崩溃.
这个
uint32_t num;
只是uint32_t类型的变量.
这个
*(uint32_t*)(ptr + num);
ptr num返回一个新指针.它被称为指针算术,它是
像常规算术一样只有编译器将类型的大小放入其中
考虑.将ptr num视为基于原始的内存地址
ptr指针@L_675_5@num uint32_t对象的字节数.
(uint32_t *)x是一个强制转换,这告诉编译器它应该处理
表达式x,好像它是unit32_t.在这种情况下,它甚至不需要
因为ptr num已经是uint32_t *了.
开头的*是用于访问的解除引用运算符
记忆通过一个指针.整个表达相当于
ptr[num];
现在因为没有初始化这些变量,结果将是垃圾.
但是,如果你像这样初始化它们:
uint32_t arr[] = { 1,3,5,7,9 }; uint32_t *ptr = arr; uint32_t num = 2; printf("%u\n",*(ptr + num));
这将打印5,因为ptr [2]是5.
以上是大佬教程为你收集整理的c – 什么是*(uint32_t *)全部内容,希望文章能够帮你解决c – 什么是*(uint32_t *)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。