c 基础

###################################################################

define和typedef的区别:

 

#define   INT_PTR   int*  //简单替换,不是c语句,不要分号

typedef   int*   int_ptr;  //申明一种新类型,需要分号

 

const   int_ptr   p;//= int* const p , p的指向不能变,p指向的内容可以变

const   INT_PTR   p;//=const int *p, p指向的内容不能变,p的指向可以变

 

INT_PTR   a,b;   //int (*a),b   =  int *a,   int  b

int_ptr   a,b;   //(int*)  a,b   =  int *a, int  *b

 

####################################################################

strlen和sizeof的区别:

 

sizeof   #关键字,参数可以是指针、数组、类型、函数等。

size_t   strlen(constchar *s);  #函数,参数只能是char *类型,以\0结尾。

 

char  str[20]=”0123456789”;

strlen(str)=10;  //结果要在运行时才知道,计算字符串的长度。

sizeof(str)=20;  //结果在编译时就知道,计算类型占用的长度。

 

sizeof返回的值表示的含义如下:

数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。

字符串常量——\n算一个,\0算一个长度,如果结尾没有\n或\0那么会自动加一个长度,eg:

char buf[] = “abcd”          sizeof(buf) = 5

char buf[] =“abcd\n”      sizeof(buf) = 6

char buf[] =“abcd\0”      sizeof(buf) = 6

 

strlen返回的值表示的含义:

从第一个字符到\0结束,但不包括\0的长度。但是包括\n。

char buf[] = “abcd”   strlen(buf) = 4

char buf[] =“abcd\n”   strlen(buf) = 5

char buf[] =“abcd\0”   strlen(buf) = 4

 

建议使用的格式:

sizeof   (X);  //关键字后面加空格

strlen(X);   //函数名后面不能加空格

###################################################################

return和exit的区别:

 

return:是关键字

void exit(int status):是库函数

 

调用exit函数,结束正在运行的整个程序。

调用return,如果在子函数中当前函数返回到调用函数,如果在main函数中整个程序返回。

 

建议使用的格式:

reutrn   (n);  //关键字后面加空格

exit(n);   //函数名后面不能加空格

###################################################################

break和continue的区别:

 

break:结束整个循环

continue:结束单次循环进入下一次循环

 

###################################################################

结构体的定义方式:

 

1.

struct   stype

{

    type  var;

};

struct   stype   svar;

 

2.

struct   stype

{

    type  var;

}   svar;

 

3.

struct

{

    type  var;

}   svar;

 

4.

typedef   struct

    type  var;

} newtype;

newtype   svar;

 

对于一个结构,如果一个函数返回值是一个结构指针struct XXX  *structname,那么需要定义struct XXX *structname 来接收这个返回值。

如果一个函数参数是一个结构指针struct XXX *,那么需要定义一个结构struct XXX,然后用&structname来表示这个参数。

 

###################################################################

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值