C/C++笔记(C语言重要问题重讲,数据篇)

笔记原在个人印象笔记,现在整理搬运。

一、基本数据类型

1.数组的坑

int a[] = { 1, 2, 3, 4 };
printf( "a is %d,&a is %d,a+1 is %d,&a+1 is %d\n" , a, &a, a + 1, &a + 1);
//这里a 与 &a值是一样的,都是4127200
//a  代表数组的首元素地址
//&a 代表整个数组的地址

这里写图片描述
2.typedef的使用(这种用法C++会改变)

struct Teacher
{
}Teacher
//C语言中,要使用必须要struct Teacher,这么搞就不用了。
typedef struct Teacher
{
}Teacher;
Teacher t;

3.void*可以指向任何地址
void a; //错误,不知道如何分配内存
void *p = malloc(10);//可以但比较危险。

4.字面量
for(i=0;i<10;i++)
10就是字面量。

二、变量本质与空指针常量

变量:一段连续内存空间的别名,是一个门牌号,就没有变量名。
1.修改内存方法

/*直接修改:*/
int a; //申请一块内存,地址12451234(编的)
       //我们用a来代表。
a=10; //将地址12451234内存中放入10这个数

操纵a仅仅是告诉编译器,操纵12451234这个空间。运行时就没有a这个标号了。


/*间接修改:*/
int* p; //申请一块内存,地址11111111(编的)
p = 0x12451234; 
    //将地址11111111内存中放入12451234这个数
*p = 100;
//1.将地址11111111内存中的数(12451234)取出
//2.将取出的12451234转换成内存地址
//3.在上面那个内存地址中放入100这个数

2.空指针常量(C与C++不同)

    0、0L、'\0'、3 - 3、0 * 17 (它们都是“integer constant expression”)以及 (void*)0 (我觉得(void*)0应该算是一个空指针吧,更恰当一点)等都是空指针常量(注意 (char*) 0 不叫空指针常量,只是一个空指针值)。至于系统选取哪种形式作为空指针常量使用,则是实现相关的。
    一般的 C 系统选择 (void*)0 或者 0 的居多(也有个别的选择 0L);至于 C++ 系统,由于存在严格的类型转化的要求,void* 不能象 C 中那样自由转换为其它指针类型,所以通常选 0 作为空指针常量(C++标准推荐),而不选择 (void*)0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值