c语言指针

2016-05-21  本文已影响179人  赤赤有名

      前几天去面试,没想到出的面试题都是c语言指针方面的,被虐的体无完肤,无奈大一的时候c语言学的不好,于是回来痛下决心,决定重新认识指针,把自己理解的写下来。

一、内存单元第一个字节的地址为首地址,在C语言中称为指针

指针的基本操作:

(1)&取地址符,取变量在内存单元中的首地址。&操作的对象必须是内存单元,如变量、数组、元素等

(2)*是间接访问运算符,间接访问指针所指向的对象。*运算符的操作对象必须是指针(地址)

int x,*p,p=&x;  *p=10;(可以这么理解,*p是一个数值,而P是一个地址)  

*p表示通过p间接访问x,*p就是p指向变量即x,因此*p与x是同一个变量。

二、指针和数组

数组值就是这个内存单元的起始地址即指针值,指向数组的第一个元素(即下标0)。因此数组的访问可以用指针访问。

int a[6]={1,2,3,4,5,6},*p;

p=a或&a[0];

*p实际上就是数组元素a[0].

C语言通过数组或指针数组元素有两种变现形式:下标表示和指针表示。那么对于i+1个元素的表示分别可用下标a[i]和指针法*(a+1)

a[0]=10;a[3]=10;

*a=10;*(a+3)=10;                        //指针法引用第一个和第四个元素分别赋值10


#include#includeint main()

{

int a[6],i,s,*p;

printf("please input data:\n");

for(i=0;i<6;i++)

{

scanf("%d",&a[i]);

}

s=0;

for(p=a;p<a+6;p++)

{

   s+=*p;//这里要加上*p,不能加上p;

}

printf("s=%d\n",s);

}

三、指针与字符串

字符串是由若干个字符组成的字符序列,以‘\0’作为串的结束符。

(1)字符串指针:

字符串第一个字符的地址就是字符串指针,字符串指针的类型是字符指针。(字符串指针实际就是一个字符串指针,指向字符串的第一个字符,而不是整个字符串)

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

用字符串指针指向一个字符串,就是使字符串指针指向指针指向字符串的第一个字符。

char *s="hello.Everyone";

char *s;

s="hello,everyone"//hello,everyone的地址赋值给s

程序段1:

char *p,*q;

p="hello,world";

q=p+6;

程序段2:

char a[20]="hello,everyone";

char *q;

q=p+11;//q指向字符串one

注意:上面都是把字符串地址(第一个字符的地址)赋值到指针变量中,而不是整个字符串。

(3)字符串的引用

字符串一般存放在字符数组中或用指针指向一个字符串,可以用字符数组名或者指针引用字符串

%s输出的是字符串,%c输出的是字符

blog.chinaunix.net/uid-22889411-id-59688.html

C语言数组与指针详解 - mr_raptor的专栏 - 博客频道 - CSDN.NET

上一篇下一篇

猜你喜欢

热点阅读