是否可以使用指针文字?

问题描述 投票:10回答:3

在C语言中,可以使用以下形式的字符串文字:>

char *string = "string here";

整数文字:

uint8_t num = 5;

长文字:

long long bigNum = 90322L; 

浮点文字:

float decimal = 6.3f;

具有指针文字的方法吗?那是存储空间的字面地址。我正在嵌入式项目上做一些工作,需要对DMA访问的值进行硬编码。我正在做类似以下的事情:

uint32_t *source = 0x08000000;

虽然此程序可以编译并正常工作,但出现以下编译器错误(我使用的是GCC的变体:]

cc0144: {D} warning: a value of type "int" cannot be used to initialize an entity of type "uint32_t *"
cc0152: {D} warning: conversion of nonzero integer to pointer

是否有执行此操作的正确方法,或者我只需要接受此作为C的事实?我知道我可以做到:

uint32_t *source = (uint32_t *)0x08000000;

但是这似乎非常不必要。行业上这样做的方式是什么?我也想知道C ++中是否存在此功能。

在C语言中,可以使用char * string =“ string here”形式的字符串文字;整数字面量:uint8_t num = 5;长文字:long long bigNum = 90322L;浮点文字:float ...

c++ c pointers literals
3个回答
11
投票

在C和C ++中,唯一的指针文字或常量为零。我们可以转到draft C99 standard部分6.3.2.3 Pointers


3
投票

不,不是。这是因为文字是valid


0
投票

在C ++中,您可以执行以下操作吗?

© www.soinside.com 2019 - 2024. All rights reserved.