1、使用getchar()函数实现对字符的循环输入
char ch;
int i = 0;
char *str = (char *)malloc(sizeof(char)*1024);
while((ch = getchar()) != '\n'))
{
*(str + i) = ch;
i ++;
}
//未知单词个数,不宜用scanf;而使用gets()会报出警告
2、函数指针变量
如:int (*pf)();
3、指针函数:返回值是指针
char *Init()
{ }
4、int (*p)() 与 int *p()区别
前者是变量,后者是函数
5、指向指针的指针
void MemoryInit(char ** str)
{
str = (char *)malloc(sizeof(char)*64);
}
int main()
{
char *ptr = NULL;
MemoryInit(&ptr);
strcpy(ptr,"hello");
return 0;
}
6、命令行参数
#include <stdio.h>
int main(int argc, char *argv[])
{
//argc参数的个数 包括./5
//argv 具体的参数 指针数组
int i;
for (i = 1; i < argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}
7、实现字符串排序,用命令行输入参数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void sort(char *a[], int length)
{
int i, j;
char *tmp;
for (i = 1; i < length ; i++)
{
for (j = 1; j < length - i ; j++)
{
//if (a[j + 1] < a[j])
if (strcmp(a[j + 1], a[j]) > 0)
{
tmp = a[j + 1];
a[j + 1] = a[j];
a[j] = tmp;
}
}
}
}
void print(char *a[], int length)
{
int i;
for (i = 1; i < length; i++)
{
printf("%s ", a[i]);
}
printf("\n");
}
int main(int argc, char *argv[])//参数类型不可改,名称可不同
{
int i, j, tmp;
int length = argc;
sort(argv, length);
print(argv, length);
return 0;
}