注释
我们先介绍一下程序设计语言中,很重要的一个部分——注释。注释通常用来说明源码的功能、作者、版权等。目前常见的C编译器,都支持两种注释,多行注释和单行注释。
多行注释
多行注释是 /* 和 */ 中间的内容,比如下面这样:
/*
这就是多行注释,
编译时注释的内容
会被编译器忽略
*/
有时注释里面会多加几个 * ,大概是为了看着明显把。
/***************************
有时,注释标志会写成这样
其实我也不知道目的是什么,
大概就是为了好看把。
***************************/
单行注释
比较老的C编译器,比如我当年上学时用的 Tubro C,就不支持,但是我接触的编译器,好像都支持。
单行注释是从两个连续的除号开始,到改行结束,像下面这样:
int main(void)// 从左面两个除号开始,到这一行结束,都是注释。
{
// 单行注释也可以在这里
printf("祖国您好!\r\nhello World! \r\n"); // 单行注释还可以在这里
}
其他基本变量类型的指针
我们到目前为止,所有学过的变量,都有对应的指针:
int main(void)
{
char *pcChar ; // 指向字符型变量的指针
short int *psShort ; // 指向短整形变量的指针
int *piInt ; // 指向整形变量的指针
long int *plLong ; // 指向长正向变量的指针
long long *pllLongLong; // 指向超长整型变量的指针
unsigned char *pcChar ; // 指向无符号字符型变量的指针
unsigned short int *psShort ; // 指向无符号短整型变量的指针
unsigned int *piInt ; // 指向无符号整形变量的指针
unsigned long int *plLong ; // 指向无符号长整型变量的指针
unsigned long long *pllLongLong; // 指向无符号超长整形变量的指针
float *pFloat ; // 指向单精度浮点数的指针
double *pDouble ; // 指向双精度浮点数的指针
}
关于指针变量的几个基本概念
指针变量的值,和指针指向的值
先看如下代码:
int main(void)
{
int iInt ; // 定义整形变量
int *piInt ; // 定义指向整形的指针变量
piInt = &iInt ;// 整形变量取地址,赋值给整形指针变量
*piInt = 10 ;
printf("piInt %d\r\n", piInt); // 打印指针变量的值
printf("*piInt %d\r\n", *piInt); // 打印指针变量指向的值
}
执行结果如下:
上面的源码,主要为了区分下面的两项:
int *piInt ; // 定义指向整形的指针变量
*piInt = 10 ; // 改变指针指向的值
定义指针时,变量名左边加“*”;使用指针时,变量名左边也要加“*”
指针变量加1
先看下面这段代码:
int main(void)
{
char *pcChar = 0; // 指向字符型变量的指针
int *piInt = 0 ; // 指向整形变量的指针
long long *pllLongLong = 0 ; // 指向超长整型变量的指针
printf("pcChar %d\r\n", pcChar);
printf("(pcChar + 1) %d\r\n\r\n", (pcChar + 1));
printf("piInt %d\r\n", piInt);
printf("(piInt + 1) %d\r\n\r\n", (piInt + 1));
printf("pllLongLong %d\r\n", pllLongLong);
printf("(pllLongLong + 1) %d\r\n\r\n", (pllLongLong + 1));
}
运行结果如下:
我们会发现,不同类型的指针,加1后的值不一样:字符型指针加了 1,整形指针加了4,超长整形指针加了8 。再结合我们前面学到的知识,字符型变量占1个字节,整形变量占4个字节,超长整形占8个字节。我们就释然了,就可以得出一个结论:
如果指针指向的类型长度是 n字节,那么指针变量加1后,指针变量的值会增加 n。