1、指向数组的指针与指针数组
int (*p)[10];
// 指向数组的指针:p是一个指针,p指向一个由10个元素组成的数组
int *p[10]
// p先与[]结合,表示p是个数组,这个数组的每一个元素都是int*的指针。
#include<stdio.h>
#include<string.h>
void main(void)
{
void sort(char (*p)[6]);
int i;
char str[10][6];
char (*p)[6];
printf("input 10 strings:\n");
for (i = 0; i < 10; ++i)
scanf("%s",str[i]);
p = str;
sort(p);
printf("Now, the sequence is :\n");
for (i = 0; i < 10; ++i)
printf("%s\n",str[i]);
}
void sort(char (*s)[6])
{
int i, j;
char temp[6],*t=temp;
for (i = 0; i < 9; i++)
for (j = 0; j < 9 - i; ++j)
if (strcmp(s[j],s[j+1]) > 0)
{
strcpy(t,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],t);
}
}
2、NULL与0 、\0 的区别
NULL和0的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于指针和对象,0用于数值对于字符串的结尾,使用'\0',它的值也是0,但是让人一看就知道这是字符串的结尾,不是指针,也不是普通的数值。
3、argv[ ]参数
传递main()函数两个参数: argc和 argv。
main(int argc, char *argv[])
argc: 整数, 为传给main()的命令行参数个数。 argv: 字符串数组。 argv[0]为空串("") ;argv[1] 为在DOS命令行中执行程序名后的第一个字符串;argv[2] 为执行程序名后的第二个字符串;
*++argv是一个指向参数字符串的指针;
(*++argv)[0]是它的第一个字符;而*++argv[0]表示指向一个特定字符串的某个字符
4、*p++与*++p
*p++; //因为++与*的优先级相同,遵循右结合方式,即*(p++),但返回值认识*p;
*++p; //*(++p) 很明显