rel="File-List" href="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/02/clip_filelist.xml" />
《C/C++深层探索》读书笔记
1. 字节顺序:有如下代码:
int i = 0x00000041;
char *p = ( char * ) & i ;
printf ( “ %s / n ”, p ) ;
若为低位优先(Little-endian)则输出“A”,若为高位优先(Big-endian)无任何输出,因为数值为0的字节在C/C++里面表示一个单字节字符串的结束,由于指针指向的第一个字节的值是“ 0 ” ,所以系统认为这是一个什么都没有的空字符串。
2.外部变量和局部静态变量存放在(静态)数据区,在整个程序运行期间它们的地址不变,从程序开始到结束都是固定的,任何函数都能存取这些数据; 函数的形式参数及局部变量存放于栈中,一般地,栈是往内存低地址方向增长的。函数之间不能访问各自的静态内部变量。
3.主调函数m的局部变量b作为实参调用一个函数f,f函数不能修改主调函数的这个局部变量,此即为值传递,因为m调用f的时候先复制b,从而得到一个b的副本,再把这个副本赋给f的形式参数,f只是把b的值(即b的副本)压栈,f并不知道b的地址,f访问的只是一个b的副本,所以改变不了m中b这个局部变量。