您的位置:首页 > 移动开发 > 微信开发

K&R的名著:<C程序设计语言>小程序总结6

2012-10-13 16:39 267 查看
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) 很明显
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 c null dos