【9-14】C笔记

来源:互联网 发布:java参数&传递 编辑:程序博客网 时间:2024/04/24 05:40

1.定义变量的同时千万千万别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据。

2.不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展。

3:关于sizeof

#include <iostream.h>
int main()
{
char *p=NULL;
char a[100]={0};
cout<<"the sizeof (*p) is "<<sizeof(*p)<<endl;
cout<<"the sizeof (NULL) is "<<sizeof(NULL)<<endl;
cout<<"the sizeof (a) is "<<sizeof(a)<<endl;
cout<<"the sizeof (&a) is "<<sizeof(&a)<<endl;
cout<<"the sizeof (&a[0]) is "<<sizeof(&a[0])<<endl;
cout<<"the sizeof (a[100]) is "<<sizeof(a[100])<<endl;
return 0;
}

the sizeof (*p) is 1
the sizeof (NULL) is 4
the sizeof (a) is 100
the sizeof (&a) is 100
the sizeof (&a[0]) is 4
the sizeof (a[100]) is 1
Press any key to continue


4.case 后面只能是整型或字符型的常量或常量表达式(想想字符型数据在内存里是怎么存的)。

5.在C 语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理

6.按照ANSI(American National Standards Institute)标准,不能对void 指针进行算法操作,即下列操作都是不合法的:
void * pvoid;
pvoid++; //ANSI:错误
pvoid += 1; //ANSI:错误
ANSI 标准之所以这样认定,是因为它坚持:进行算法操作的指针必须是确定知道其指向数据类型大小的。也就是说必须知道内存目的地址的确切值。

7.定义const 只读变量,具有不可变性。例如:
const intMax=100;
intArray[Max];
这里请在Visual C++6.0 里分别创建.c 文件和.cpp 文件测试一下。你会发现在.c 文件中,编译器会提示出错,而在.cpp 文件中则顺利运行。为什么呢?我们知道定义一个数组必须指定其元素的个数。这也从侧面证实在C 语言中,const 修饰的Max 仍然是变量,只不过是只读属性罢了;而在C++里,扩展了const 的含义,这里就不讨论了。

case 语句后面可以是const 修饰的只读变量

8.先忽略类型名(编译器解析的时候也是忽略类型名),我们看const 离哪个近。“近水楼台先得月”,离谁近就修饰谁。
const int *p; //const 修饰*p,p 是指针,*p 是指针指向的对象,不可变
int const *p; //const修饰*p,p 是指针,*p 是指针指向的对象,不可变
int *const p; //const修饰p,p 不可变,p 指向的对象可变
const int *const p; //前一个const 修饰*p,后一个const 修饰p,指针p 和p 指向的对象都不可变

9大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。

原创粉丝点击