int* pa[5] 表示指针数组 指一个数组里面装着指针 int (*p)[5]表示数组指针,表示一个指向数组的指针
int *p;//一维数组 int **p;//二维数组 int (*p)[3];//数组指针 int *p[3];//指针数组
while(i)
不管i是正数还是负数
只要不为零 条件就成立
也就是对于负数的处理和正数的处理是一样的
函数名: rewind() 功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头 注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。 rewind函数作用等同于 (void)fseek(stream, 0L, SEEK_SET); [1]
用 法: void rewind(FILE *stream);
在C中使用malloc时不需要强制类型转换,因为在C中从void*到其他类型的指针是自动隐式转换的; 在C++中使用malloc时必须要强制类型转换,否则会报错,但在c++中一般用new而不用malloc;
指针在建立后会被分配一块空间,用于存储其所指向的地址,因为指针是有对应内存空间的,因此指针值(指向的内存空间)是可以改变的;而引用则不行,引用没有内存空间,仅仅是被引对象内存空间的别名,改变引用如&a=4实际上等价于a=4,改变的是被引对象的值,不改变该引用所指的内存空间;
指向空值的引用是没有意义的(因为引用对象不能改变,也就是这个引用永远指向null,那这个引用根本就没有存在的必要);指向空值的指针是有意义的,尤其在指针被删除后,如果不对指针进行赋值,则指针的值将会由系统随机指定,这样后续如果有对指针的操作的话,将会带来很大的风险。因此指针被删除后必须赋值为null;
因为引用无法改变,因此不进行初始化的引用没有意义;因为指针可以改变,因此指针可以不进行初始化,可以在后续程序中动态改变;
函数可以嵌套调用但不可以嵌套定义
c语言必须得有一个主函数吧? 没有主函数那还叫c语言吗?
return后面括号中表达式的值即是函数的值,这句话是错误的,当return后面表达式值的类型与函数的类型不一致时,需要强制类型转化。
对于下面代码段,正确的赋值语句( )
char a[5], *p=a;
A p=“abcd”; P是字符型指针,将“abcd”的地址给了P