我是靠谱客的博主 炙热银耳汤,最近开发中收集的这篇文章主要介绍指针数组、字符串指针、指向指针的指针、指针数组作main函数的形参,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、指针数组
指针数组的概念:
一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为

类型名数组名[数组长度];
例如: 

        int*name[4];

#include <stdio.h>
void main()
{
int a[5] = {1, 3, 5, 7, 9};
int *name[5] = {&a[0], &a[1], &a[2], &a[3], &a[4]};
int i;
for( i=0; i < 5; i++ )
{
printf("%d
", *name[i]);
}
printf("nn");
}

 定义字符串数组及定义字符串指针打印:

#if 0
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
char str[] = { "hello furong" };
int i;
for (i=0; *(str+i)!=''; i++)
{
printf("%c", str[i]);
}
}
#endif
#if 0
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
char *str = { "hello furong" };
int i;
for (i = 0; str[i] != ''; i++)
{
printf("%c", str[i]);
}
}
#endif
#if 1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
char* str = { "hello furong" };
int i;
for (i = 0; *(str+i) != ''; i++)
{
printf("%c", str[i]);
}
}
#endif

用for循环打印字符串的条件为'',''在c语言中为字符串的结束符。

#include <stdio.h>
void main()
{
char a[] = "Fishc.com is a good web site!", b[40];
int i;
for(i=0; *(a+i) != ''; i++)
{
*(b+i) = *(a+i);
}
*(b+i) = '';
printf("String a is: %sn", a);
printf("String b is: ");
for(i=0; b[i] != ''; i++)
{
printf("%c", b[i]);
}
printf("nn");
}
#include <stdio.h>
void main()
{
char a[] = "Fishc.com is a good web site!", b[40], *p1, *p2;
int i;
p1 = a;
p2 = b;
for( ; *p1 != ''; p1++, p2++)
{
*p2 = *p1;
}
*p2 = '';
printf("String a is: %sn", a);
printf("String b is: ");
for(i=0; b[i] != ''; i++)
{
printf("%c", b[i]);
}
printf("n");
}

 1)用for循环进行字符串赋值后,需要加*(b+i) = '';进行结尾。

2)for循环中b[i]不能用阵阵p2代替,指针存储的是字符串的地址,打印指针使用s%字符串型格式符。

 2、指向指针的指针

怎样定义一个指向指针数据的指针变量呢?
形式可以如: char**p;

p的前面有两个*号。*运算符的结合性是从右到左,因此**p相当于*(*p),显然*p是指针变量的定义形式。如果没有最前面的*,那就是定义了一个指向字符数据的指针变量。

现在它前面又有一个*号,表示指针变量p是指向一个字符指针变量的。*p就是p所指向的另一个指针变量。例如:
#include <stdio.h>
void main()
{
char *name[] = {"Fishc.com", "www.fishc.com", "home.fishc.com", "Fishc.com/dz"};
char **p;
int i;
for( i=0; i < 4; i++ )
{
p = name + i;
printf("%sn", **p);
}
}

3、指针数组作main函数的形参

指针数组的一个重要应用是作为main函数的形参。在以往的程序中,main函数的第一行一般写成以下形式:
p void  main()

括弧中是空的。实际上,main函数可以有参数。

例如: void  main(int  argc,char  *argv[ ])
argc和argv就是main函数的形参。

main函数是由操作系统调用的。那么,main函数的形参的值从何处得到呢?

显然不可能在程序中得到。实际上实参是和命令一起给出的。也就是在一个命令行中包括命令名和需要传给main函数的参数。

命令行的一般形式为:

命令名 参数1 参数2……参数n

#include <stdio.h>
void main(int argc, char *argv[])
{
while( argc > 1 )
{
++argv;
printf("%sn", argv);
--argc;
}
}

执行结果为乱码!

#include <stdio.h>
#include <stdlib.h>
void main (int argc, char *argv[])
{
int i;
printf ("the number of string is : %dn", argc-1);
for(i=1; i < argc; i++)
{
printf ("the string %d is : %sn", i, argv[i]);
}
}

定义

含义

int i;

定义整型变量i

int *p;

p为指向整型数据的指针变量

int a[n];

定义整型数组a,它有n个元素

int *p[n];

定义指针数组p,它由n个指向整型数据的指针元素组成

int (*p)[n];

p为指向含n个元素的一维数组的指针变量

int f();

f为带回整型函数值的函数

int *p();

p为带回一个指针的函数,该指针指向整型数据

int (*p)();

p为指向函数的指针,该函数返回一个整型值

int **p;

p是一个指针变量,它指向一个指向整型数据的指针变量

一、指针变量加(减)一个整数
例如:p++、p--、p+i、p-i、p+=i、p-=i等。
 指针变量赋值
将一个变量地址赋给一个指针变量。如:
p=&a;  (将变量a的地址赋给p)
p=array; (将数组array首元素地址赋给p)
p=&array[i];(将数组array第i个元素       的地址赋给p)
p=max;(max为已定义的函数,将ma     x的入口地址赋给p)
p1=p2;(p1和p2都是指针变量,将  p2的值赋给p1)

三、指针变量可以有空值,即该指针变量不指向任何变量,可以这样表示:p=NULL; 

五、两个指针变量比较
若两个指针指向同一个数组的元素,则可以进行比较。指向前面的元素的指针变量“小于”指向后面元素的指针变量。

最后

以上就是炙热银耳汤为你收集整理的指针数组、字符串指针、指向指针的指针、指针数组作main函数的形参的全部内容,希望文章能够帮你解决指针数组、字符串指针、指向指针的指针、指针数组作main函数的形参所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部