我在 C#、java 中找到了很多关于数据类型可变性的信息……但是纯 C 呢?
例如,是 int
默认情况下在 C 中不可变?
例如,查看以下代码示例:
#include <stdio.h>
int main()
{
int a,b,c;
b=0;
c=0;
a=b+c;
b=1;
c=2;
printf("1st time %d\n",a);//gives out 0
c=3;
printf("2nd time %d",a);//gives out 0
return 0;
}
上面的代码显示一个普通的
int
是不可变的,对吗?
最佳答案
[I]s int mutable in C?
简短的回答:是的!
如果您问是否可以改变 C 中的任何内存位置,答案是肯定的。 (有时会带来危险的后果!)虽然可以设计一个无法通过您为其创建的 API 直接改变的数据结构,但您几乎可以覆盖纯 C 中的任何内存位置。
难怪有人喜欢,有人不喜欢。
编辑
引用 Roger 上面的评论:
#include<stdio.h>
int main (int argc, char *argv[]) {
const int n = 1;
int *m = &n;
*m = 10;
printf ("%d\n", n); /* prints 10 */
return 0;
}
所以,是的,甚至可以覆盖
const int
的内存位置。 s。
关于c - 默认情况下,C 中的基本数据类型是可变的还是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849952/