1.在函数里面不能再定义函数,在C语言中,一切函数都是一个平等的存在。函数是一个独立存在的单位。在C语言中,函数是程序执行的最小单元。
主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中也不能使用其它函数中定义的变量。因为主函数也是一个函数,它与其它函数是平行关系。
2.下面一段代码:
#include<stdio.h>
extern "c"//这里是告诉编译器,下面的代码用C方式编译。
int fun()
{
......//代码
}
extern "c++"//这里是告诉编译器,下面的代码用c++方式编译。
void main()
{
......//代码
}
3.在一个C语言工程中会有若干个 .c 、.cpp、 .h文件。通常把声明和定义都放在头文件中。
所有的函数都是全局的。
4.声明和定义都是对于编译器的。
5.下面一段代码:
#define YHP 0 //这块只关心是否定义过,而对后面替换成什么,它并不关心。
#ifdef YHP
#define MAXSIZE 100
#else
#define MAXSIZE 10
#endif
#include <stdio.h>
void main()
{
int a=0;
a=MAXSIZE;
printf("%d\n",a);
}
/***********************************/
#ifndef//则刚好相反
另一种写法:
1)#define YHP 1
#Iif YHP
#define max 100
#else
#define MAX 10
#endif
2)#if 1
#define MAX 100
#else
#define MAX 10
#endif
(1)多分支结构:
#ifdef YHP
#define MAX 100
#else
#define MAX 10
#endif
(2)单分支结构:
#ifdef YHP
#define MAX 100
#define MIN 10
#endif
6.在下面的一段代码中:
int * x,y,z;//其中x为整型指针,y、z是整型变量。
而下面的写法:
typedef int * PINT;
PINT x,y;//x,y 均为整型指针。
/***********************************/
#define PINT int *
PINT x,y,z;//x为整型指针。
7.野指针:定义指针的时候未给它赋初值。
int *p=NULL;
8.地址没有大小之说,只有高低之说。
9.一个内存单元是一个字节。
10.32位系统下只要是指针都占4byte。
11.类型对指针具有决定性的作用。指针的类型决定的了指针加一的能力。指针的类型决定了指针对内存的解释能力。
12.指针不是基本数据类型,它属于派生数据类型。
13.下面一段代码:
void main()
{
int a=0x12345678;
int *ip=&a;
char *cp=(char)&a;
char *p=(char)&a;
}
14.对内存的解释是靠类型去解释的,它决定这我们以一种什么样的类型去看待它,类型的强转意味着在这块对内存的解释将发生变化。