C语言相关问题(1)
2011-04-28 23:25 Clingingboy 阅读(685) 评论(0) 编辑 收藏 举报
1._tcslen(".....")和stlen(".....")的区别
http://topic.csdn.net/u/20101115/22/4f15d24a-f77a-4298-91d5-9082a2b510d3.html
_t开头的函数都是如此
2.结构体对齐问题
参考:http://www.cnblogs.com/motadou/archive/2009/01/17/1558438.html
http://blog.csdn.net/jiangnanyouzi/archive/2009/01/16/3793864.aspx
比如下面结构体
struct A
{
double d;
int i;
char c;
};
struct A1
{
int i;
double d;
char c;
};
用sizeof测试出来是16和24
3.函数传字符串
下面三个函数均以第一个函数为准
void fun1(char *a)
{
}
void fun2(char a[5])
{
}
void fun3(char a[])
{
}
4.结构体命名规范
4.1.tag前面加前缀_,字母全大写
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
4.2用tag开头,后面接大写
typedef struct tagPOINT
{
LONG x;
LONG y;
} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
5.指针定义的字符串
其为只读,不可改,但可以总体重复赋值,即指向了其他地方
char *a="hello";
char b[]="hello";
a[0]='1';//wrong
b[0]='1';//right
char *a="hello";
char b[]="hello";
a="world";//right
b[0]='1';//right
6.输入输出预定义变量
如下:__out和__in标识参数的输入与输出
WINUSERAPI
BOOL
WINAPI
SetRect(
__out LPRECT lprc,
__in int xLeft,
__in int yTop,
__in int xRight,
__in int yBottom);
还有纯粹的IN和OUT定义,作为参数提示
#ifndef IN
#define IN
#endif
#ifndef OUT
#define OUT
#endif
7.指针++问题
int main()
{
int a=1;
int *pa=&a;
//更改了指针地址
pa++;
*pa=2;
pa++;
*pa=3;
pa=&a;
//更改了指针地址
pa++;
int b=*pa;
pa++;
int c=*pa;
//同上效果
pa=&a;
int b1=*++pa;//*(++pa)
int c1=*++pa;
pa=&a;
//更改pa指向的值
int b2=++*pa;//++(*pa)
int c2=++*pa;
//后缀++
*pa=1;
int b3=*pa++;//*(pa++)
int c3=*pa++;
}
八.指针索引
可以直接指针索引值
int a=1;
int *pa=&a;
pa++;
*pa=2;
pa++;
*pa=3;
pa=&a;
int i=pa[2];