C指针初学

作者: 宝塔山上的猫 | 来源:发表于2017-07-05 23:53 被阅读47次

C指针具有很重要的作用,就不多说了。
其中学习指针首先要知道两个符号 * 和&。
在类型后面和变量名前面添加* ,代表这是一个指针对象,如int * k,这代表一个指向int类型的指针k。
而&则是取地址符,在c中如过有int k= 10;那么使用&k,则是取出i在计算机中的地址,而指针正是指向这个地址的。
所以int * p = &k;这个表达式意思为int型指针p指向i的地址,如果要取出这个地址中所保存的值,那么直接使用 * p就可以了。
这里要区别一件事,就是int * p是申明这是一个指向int型的指针,而*p则是取出这个指针所指对象的值。
也就是:
int k=10;
int * p = &k; // 指针p指向k
printf("获取指针p里面保存的值 %d \n", *p); // 打印出指针p中所保存的值。

指针与数组

指针与数组又是一个比较难的地方。
一个数组的地址是其第一个元素的地址,因此在c中书写函数原型的时候,以下四种写法是等价的:

int sum(int *ar, int n);
int sum(int *, int n);
int sum(int ar[], int n);
int sum(int [], int);

当然了,在函数原型中书写时可以省略参数名,但是在函数定义中是不能省略的,大家要注意。

以下是数组与指针的一些简单使用:

char ch[] = "I'am special";
char  * pr = ch;
printf("address of ch %p \n", ch); //查看ch的地址,数组的地址即其第一个元素的地址
printf("address of pr %p \n", pr);  // 指针的值为ch的地址:
printf("address of pr %c \n", *pr); //取出ch第一个元素的值, %c指的是获取单字符
ch[5] = 'q';    // 修改ch第5个元素s为p
printf("%c \n",ch[5] );     // 获取ch第五个元素
printf("%c \n",*(pr+ 5));   // 通过指针获取ch第五个元素
printf("%p \n",&ch[5] );// 获取ch第五个元素地址
printf("%p \n", pr+5);// 通过指针获取ch第五个元素地址

相关文章

  • C指针初学

    C指针具有很重要的作用,就不多说了。其中学习指针首先要知道两个符号 * 和&。在类型后面和变量名前面添加* ,代表...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • C/C++:指针初学

    整理自计蒜客-CS 112: C++ 程序设计 指针是什么 指针是一个变量,其储存的是值的地址,而不是值本身。指针...

  • 1+1 不等于2? 来看这道奇怪的C语言题目

    对于很多C语言初学者来说,指针是一大难题! 但是指针也是c语言的灵魂,离开指针,可能c语言就只能处理小学数学题了。...

  • 初学C语言

    初学C语言——指针介绍 #include int main(int argc,const char * argv...

  • C语言学习手记—释放内存失败?指针赋值有问题!

    今天想总结一个C语言初学者刚接触到指针的时候,很容易出现的指针使用误区。首先,来回顾一下初学指针最常遇见的用法例子...

  • 使用C语言中的“不透明”指针,可以隐藏很多不想公开的细节

    虽说指针是C语言中比较复杂的语法,但是确实非常好用,因此我写过不少文章讨论C语言中的指针,相信对初学者理解指针有一...

  • 初学C语言

    初学C语言——指针与数组的关系 #include void hq(int * q); void zhj(int ...

  • 初学C语言

    初学C语言——指针的使用 #include void swap(int*a,int*b); int main(i...

  • 详解C++指针和引用

    C++是在C语言的基础上发展来的。C++除了有C语言的指针外,还增加一个新的概念——引用,初学者容易把引用和指针混...

网友评论

    本文标题:C指针初学

    本文链接:https://www.haomeiwen.com/subject/yaechxtx.html