相关疑难解决方法(0)

是C强类型?

引用维基百科:

支持多种隐式转换的两种常用语言是C和C++,有时声称它们是弱类型语言.然而,其他人认为这些语言对如何混合不同类型的操作数有足够的限制,这两种应该被视为强类型语言.

有更确定的答案吗?

c strong-typing weakly-typed

78
推荐指数
8
解决办法
4万
查看次数

奇怪(对我来说)指针的行为

我正在读指针,但我对它们的性质感到困惑.这就是我的意思.

int x = 4;

//Here I declare p as integer pointer
int *p;

// Here I assign memory address of x to pointer p
p = &x;

// The line below prints result 4 which is expected. If I miss asterisk before p I'll get memory address instead of data which that memory address holds.
printf("%d", *p)
Run Code Online (Sandbox Code Playgroud)

总结当星号在指针之前闪烁时它"指向"内存地址.如果星号在指针之前,它"指向"实际数据.到现在为止还挺好.

但为什么这段代码正常工作?

int someIntVariable = 10;

const int *p = &someIntVariable;
printf("%d", *p);
Run Code Online (Sandbox Code Playgroud)

如果我错过星号,编译器会给我一个警告"警告:初始化从指针生成整数而没有强制转换"

我期望p(如果编译器允许我使用不带星号的p)来保存someIntVariable的内存地址而不是它的"value";

这里发生了什么?

c

1
推荐指数
1
解决办法
94
查看次数

标签 统计

c ×2

strong-typing ×1

weakly-typed ×1