指针、数组和字符串

来源:互联网 发布:淘宝代购点什么意思 编辑:程序博客网 时间:2024/05/29 07:42
a.数组元素和指针
数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。
例如:

int a[10] /*定义a为包含10个整型数据的数组*/

int *p;     /*定义p为指向整型变量的指针*/

p=&a[0];  a[0]元素的地址赋给指针变量p

也就是说,p指向a数组的第0号元素。

用指针引用数组元素

C语言规定:

如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。

例:

P的初值为&a[0] :

p+ia+i都是a[i]的地址。

*(p+i)和*(a+i)都是p+ia+i所指向的数组元素,即a[i].

例如:

*(p+5),   *(a+5)就是a[5].

指向数组的指针变量也可以带下标。p[i]和*(p+i)等价。

引用一个数组:

下标法:用a[i]来表示;

指针法:用*(a+i),*(p+i)表示。

C语言中,可以用两种方法访问一个字符串。

1)用字符数组存放一个字符串,然后输出该字符串。

int main()

{

    char string[]=”I love China!”;

   printf("%s\n",string);

    return 0

}

说明:和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址


2)用字符串指针指向一个字符串。

main()

{

  char*string[]={”I loveChina!”,”I am ”};

 printf("%s\n",string);

}

char *s="C Language";则表示s是一个指向字符串的指针变量。

把字符串的首地址赋予s

字符数组和字符串的区别

1.字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续

的内存空间中并以‘\0’作为串的结束。

字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。

2.  对字符串指针方式 char *ps="C Language";

可以写为:

char *ps;ps="C Language";

而对数组方式:static char st[]={"CLanguage"};

不能写为:

charst[20];  st={"CLanguage"};

而只能对字符数组的各元素逐个赋值。

前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。
但是对指针变量直接赋值是可以的。因为C系统对指针变量赋值时要给以确定的地址。

因此char *ps="C Langage";

或者char *ps;ps="C Language";都是合法的。 

 
0 0
原创粉丝点击