简书 c语言 指针,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

{

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输出的是字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值