1.int a[][4]={0,0};与int a[3][4] = {0};
元素不够的就以位模式初始化为0
a[第一维][第二维] 的大小,也就是最多存几个
int a[][3]={1,2,3,4,5,6,7,8};实际上等于
int a[][3]={ {1,2,3}, {4,5,6}, {7,8} };
有3个一维元素,所以一维大小为3
测试代码:
int main(void) { ][] = {}; ; i < ; ++i) { ; j < ; ++j) { printf("%d ", a[i][j]); ) printf("\n"); } } ; }
2.int k=10;
while(k=0) k=k-1;
则循环体语句一次也不执行
while中k=0,则while(0)判断为0后不再执行下面的语句
3.t=0; while(printf("*")) { t++; if(t>3)break; } 这段程序可执行几次 (4次)
int printf(const char *format, ...);
Upon successful return, these functions return the number of characters
printed (excluding the null byte used to end output to strings).
4.内存操作:将指针unsigned char* ptr的内容向后移动4个字节
*(ptr+4)=*ptr;
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <vector> #include <time.h> using namespace std; #define debug(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl int main(void) { ; unsigned char* ptr=(unsigned char *)&i; ; j < ; ++j) { printf("%#x %#x\n", &i+j, ptr[j]); } *(ptr+) = *ptr; ; j < ; ++j) { printf("%#x %#x\n", &i+j, ptr[j]); } ; }
5.将无符号变量unsigned int val进行字节序颠倒
//<< > & //unsigned int val = 0xff000000; unsigned int val = 0xff; //val = ((val&0x000000ff)<<24)|((val&0x0000ff00)<<8) |( (val&0x00ff0000)>>8)| ((val&0xff000000)>>24); val = ((val&)|((val&) |( (val&)| (val>>); printf("%#x\n", val);
6.字符串逆转:
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <vector> #include <time.h> using namespace std; #define debug(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl int main(void) { char *src = "hello,world"; char *dest = NULL; int len = strlen(src); dest = (); //要为\0分配一个空间 char *d = dest; ]; //指向最后一个字符 ) { *d++ = *s--; *d = ; //尾部要加上\0 } cout << dest << endl; free(dest); //使用完,应当释放空间,以免造成内存泄露 ; }
7.编写strcpy函数(10分) 已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
char *strcpyx(char *strDest, const char *strSrc){ assert((strDest!=NULL) && (strSrc !=NULL));//2分 char *address = strDest;// 2分 while( (*strDest++ = *strSrc++) != '\0')NULL;//2分 return address;// 2分 }
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了实现链式表达式。 // 2分
例如 int length = strlen( strcpy( strDest, "hello world") );