c语言指针

      前几天去面试,没想到出的面试题都是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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,808评论 3 44
  • 1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧...
    金巴多阅读 5,852评论 0 9
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 11,527评论 1 42
  • char * string =“I LOVE china”; 在C 语言中 只有字符变量,没有字符串变量。 cha...
    潇湘候晨雪阅读 3,602评论 0 0
  • 前言 最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我...
    Xiho丶阅读 5,403评论 1 12