1、sizeof是关键字,编译器在编译的时候就知道了sizeof的结果;
char data[5] sizeof(data){在关键字sizeof中传递的是数组标识},在函数中data只传首地址;
2、给一个二维数组int data[3][4],用一个指针变量来保存数组名;4个int 组成一个对象;
int *p[4] = data;//三行四列,data + 1和data之间是加了4个int;
3、给一个三维数组int data[3][4][5];用一个指针变量来保存数组名;
//三个平面,每一个平面中有4行5列;data和data +1之间是加了一个面;
int (*p)[5][6]=data;
数组名是常量,为什么要用一个变量来保存这个常量?
空间:范围,结束标志;
字符空间(\0)
char *;
非字符空间(无结束标志,只能通过个数进行限制);
int * float * ....struct abc *(直接通过指针明确的指向);
子函数怎么接收空间;
统计任意空间的1的个数 void *data存在无法处理后续操作 data【1】?
只表示接收到了一个地址的值而已,便于子函数接收主函数传递的空间;
这种写法需要跟进一个个数来限制这个地址访问的字节数;
int cntOne(void *data,int num){
char *p=data;//重新定义接收到的地址格式;
}
int main(){
int a;
float b;
cntOne(&a,sizeof(a));
cntOne (&b,sizeof(b));}
strcpy不能用;用strncpy;
strncpy:为了方便链式调用返回一个char *;
4、strncpy: 数组赋值,初始化等场景使用;
设计一个子函数构造一个带格式化的空间,产生的文件名a01.txt a02.txt ....
memset()
snprintf()
5、strncmp(const char *str1,const char *str2,size_t n),最多比较str1和str2的前n个字符
strcmp()没有n;全部比较;
6、strstr(const char *haystack,const char *needle)在haystack中茶查找一次needle的位置,不包括终止符'\0';
字符串匹配算法;strstr();
7、