注释
我们先介绍一下程序设计语言中,很重要的一个部分——注释。注释通常用来说明源码的功能、作者、版权等。目前常见的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。