更新自2019.1.15
编程语言常见问题记录
1.C语言
1.1 动态数组
使用calloc函数进行动态一维数组分配。但是不能使用memset函数进行初始化。而正规申请的定长数组是可以使用memset函数进行置零初始化的。
例如:要申请一个p[n]:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *p, *q;
int n; //n维数组
p = (char *)calloc(n, sizeof(char)); //申请了一个n维数组p
//还有一种方式为申请n+1维数组,并且令第n+1位元素为\0
q = (char *)calloc(n + 1, sizeof(char));
q[n] = '\0'; //第n+1个元素为q[n]
return 0;
}
使用calloc函数进行动态二维数组分配,例如,要申请一个p[m][n]
int main()
{
char *p;
int i, m, n; //n维数组
p= (char **)calloc(m, sizeof(char **));//分配指针数组,即变为p[m][]
for (i = 0; i < m; i++)
{
p[i] = (char *)calloc(n, sizeof(char*));//对每一行分配n个元素,变为p[m][n]
}
return 0;
}
1.2 统计指针有效数字或字符串
1、字符型指针(char *)
//char* s = "abcderwasfa"; //定义指针型字符数组
int GetLenth(char* s)
{
int len;
len = strlen(s);//只能对char型数组使用
return len;
}
2、数字型数组(int *)
除了在定义数字型数组的时候给定长度以外,题主不知道其他的统计方式了!!!
//定义数字型指针数组
int a[5]={....}
int* pt[5];
for(i=0;i<5;i++)
{
pt[i] = &a[i];
}