1)main函数
int main( int argc, char *argc[ ])
int main( int argc, char **argc)
main函数所有有学c语言的人都知道,最近学会在main函数中调用参数。
其中
argc 表示命令行参数个数(包含可执行文件名)
argv 则是一个字符串数组,共有 argc 个字符串,每个串为一个参数
举例:
一个简单的例子
// xren.cpp
#include <stdio.h>
void main( int argc, char *argv[] )
{
rename( *(argv+1), *(argv+2) );
}
这个程序实现命令提示符下文件改名(可改目录名),用法如下
xren oldname newname
使用这种main函数可方便在执行程序时带入字符串参数,了解就好。
main函数常规写法
int main()
{
。。。。。
return 0;
}
2)sizeof和strlen
先看个例子:
已知 char *str1="absde";
char str2[]="absde";
使用sizeof和strlen求长度:
sizeof(str1)=4 strlen(str1)=5
sizeof(str2)=6 strlen(str2)=5 str1是一个指针,只是指向了字符串"absde"而已。所以sizeof(str1)不是字符串 占的空间也不是字符数组占的空间,而是一个字符型指针占的空间。所以sizeof(str1)=si zeof(char*)=4,在C/C++中一个指针占 4个字节。
str2是一个字符型数组。C/C++规定,对于一个数组,返回这个数组占的总空 间,所以sizeof(str2)取得的是字符串"absde"占的总空间。"absde"中,共有a b s d e /0 六个字符,所以str2数组的长度是6,所以sizeof(str2)=6*sizeof(char)=6。
strlen函数用于计算字符串长度,所见字符串字符个数即为字符串长度。
strlen判断一个字符串的结束就是以其末尾的'/0'为界限。其实现代码可以模拟为以下:
int strlen(char *p)
{
int i=0;
while(*p++!=NULL)
i++;
return i;
}
3)#include < > 和#include " " 区别
#include < >从系统目录查找,
#include “ ”先从程序的当前目录查找,再从系统目录查找
显然使用#include “ ”可以保证不犯错误,但实际运用中还是将二者分别使用
#include < > 系统库调用
#include “ ” 调用自己编写的头文件(与c文件、cpp文件同名)
4)头文件中ifndef、define、endif
使用方法:
.h文件,如下:
#ifndef XX_H
#define XX_H
...
#endif
这样如果有两个地方都包含这个头文件,就不会出现两次包含的情况 。。
因为在第二次包含时 XX_H 已经有定义了,所以就不再 include了
所以别写头文件时,使用上述格式可防重定义。
5)new、delete和malloc、free
相同点:都可用于申请动态内存和释放内存
不同点:
(1)操作对象有所不同。
malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数 据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动 执行构造函数,对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运 算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/ free。
(2)在用法上也有所不同。
函数malloc 的原型如下:
void * malloc(size_t size);
用malloc 申请一块长度为length 的整数类型的内存,程序如下:
int *p = (int *) malloc(sizeof(int) * length);
我们应当把注意力集中在两个要素上:“类型转换”和“sizeof”。