- 指向多维数组的指针:int(*p)[ ]
- 用一维数组对二位数组进行大小的比较
- 直接传回函数中定义的数组是不行的
- 如何生成随机数:
库函数加入“stdlib.h”“time.h”
srand((int)time(0)); 可连续随机输出
rand()%100输出0-100中任意数 - 对于字符串中的单词问题,可以采用二维字符组的形式
- 对于最长公共子串的简便查找法
数形结合:创建多维数组,用数值表示字符串相等情况,真的牛比 - 注意多维数组别写大了,不然会直接弹出结束标志
- 指针初始化
int *n;
int a=0;n=&a;
- gets_s函数用指针输入字符串需写成gets_s(a,222)
- strcat函数可用strlen先把长度测出来
- 中括号把主函数分段
- 如何用指针对字符串排序?
用strcmp比较字符串大小,strcpy交换字符串顺序 - 对多级指针赋初值
采用诸如金字塔赋值法
int a =100;
int *p1 = &a;
int **p2 = &p1;
而
int *p;
*p=5;
是错误的
14. 不能直接改变指针变量的值,如使用
int *p;
p++;
是错误的
15. 字符串指针与数组指针区别
a.赋初值区别
char *a="fuck you";
char str[]={"fuck you"};
b.数组指针是地址,字符串指针是内存空间
16. 函数体中指针如果指向了常量,不能再对其进行修改,如:
char *p="fuck";
- 对指针数组的解释
int a[2][4];
int (*p)[4]=a;
二维数组名本质上是一个数组指针;
18. 对指针进行初始化,不要让两个指针指向同一个变量,不然会同时变化
19. 对变量进行改变只能用指针
20. 动态生成数组:
define"malloc.h"
int *num;
int num_len;
num=(int*)malloc(sizeof(int)*num_len);
- 在函数内动态申请内存并传回
需使用多级指针
void GetMemory2(char **p, int num)
{
*p = (char *)malloc(sizeof(char) * num);
}
void Test2(void)
{
char *str = NULL;
GetMemory2(&str, 100); // 注意参数是 &str,而不是str
strcpy(str, "hello");
cout<< str << endl;
free(str);//释放内存
}
- 关于getchar输入符的使用
getchar可用来去掉字符读进去一次,后移一次。
一个输入单词的代码串如下,注意ch的赋值
char word[50][50],ch=0;
int i,j;
for(i=0;ch!='\n';i++)//输入字符串
{
ch=0;
for(j=0;ch!=' '&&ch!='\n';j++)
{
ch=getchar();
if(ch==' '||ch=='\n')continue;
word[i][j]=ch;
}
word[i][j-1]='\0';
}