sizeof
char p[]="kick your head"; sizeof(p)结果为15。 char p[20]="kick your head"; sizeof(p)结果为20。 char p[20]; sizeof(p)结果为20。 char *p="kick your head"; sizeof(p)结果为4。 char *p[][3]={{"11","12","13"}, {"21","22","23"} } sizeof(p)/sizeof(*p)结果为2? void func(char a[100]) { sizeof(a);//结果是4,a作为函数的参数,退化为指针类型 } ------------------------------- ’\r’=13, carriage return ’\n’=10, line feed
字符串中"\12"表示8进制的12,即0x0A
一般的第一位为0表示8进制,即’\12’=012
----------------------------------
记事本中单独的’\r’,’\n’以及"\n\r"都显示为黑块,
只有"\r\n"才表示回车。
而写字板中单独的’\r’,’\n’都等同于"\r\n",
而"\n\r"则表示两个回车。
-------------------------------
奇怪,这样写居然不会出错。
int a=10000; char p=’x’; AfxMessageBox(itoa(a,&p,10));
函数itoa()需要向内存p处填入6个字节的字符,
但是实际上只给p分配1个字节的内存,
那么这多占的5个字节怎么不会出错呢?
如果这样写,则p2的内容显示不出来:
int a=10000;char* p2="abcdefg";char p=’x’; AfxMessageBox(itoa(a,&p,10)); AfxMessageBox(p2); 这样写则两次结果不同:
int a=10000;char p=’x’; AfxMessageBox(itoa(a,&p,10)); AfxMessageBox(itoa(a,&p,10));
结论:执行itoa(a,&p,10)之后,p之前定义的内容受到损害。
------------------------------- int a[]={1,2,3}; int b[]={1,2,3,}; int aa=sizeof(a);//aa=12 int bb=sizeof(b);//bb=12
注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/1169980649394.html
如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:)
我得意,我用他的代码;
我自豪,他用我的代码!
void main() { printf("hello, vcer!"); }
A B C D E