K&R阅读笔记——指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K&R阅读笔记——指针相关的知识,希望对你有一定的参考价值。

地址运算符&只能应用于内存中的对象,即变量和数组元素。他不能作用于表达式,常量和register类型的变量。

*ip++ 和 (*ip)++的区别,前者将指针ip本身指向下一个元素,而后者将ip指向的内容加1,因为一元运算符*和++,优先级相同,但是结合顺序是自右向左。

对于:int a[10]

  &a 的类型为int (*)[10],是一位数组,而a的类型为int *类型。所以注意不要搞错。

  int *p = a;是可以的。

  int *p = &a[0];也是可以的

  &a[i]和a+i的含义是相同的。

  但要注意:数组名是常量,而指针是变量。可以对指针进行算数运算,但是对数组名是不可以进行算数运算的。

  对指针进行算数运算的含义是:取其前后的若干个相同类型的元素。

char string[] = "hello world!"

char *string2 = "hello world!"

两者有着很大的区别,string在内存中开辟了一个数组来存放字符串,可以进行修改;而string2只是一个指针,指向了常量字符串,如果试图修改其内容,结果是没有定义的。

对于二维数组:int a[3][4]

如果想在函数中作为参数传入二维数组,则函数应该写为;

void fun(int a[3][4]);void fun(int a[][4]);或者void fun(int (*a)[4]);

命令行参数void main(int argc, char *argv[]);

  argv[0][1],**argv第一个字符串的第一个字符

  argv[1][1],(*argv)[1], *(*argv+1)第一个字符串的第一个字符

在后续的学习中注意弄清楚;二维数组和指针数组,及指向指针的指针之间的关系。int *p[13]和int (*p)[13]在引用和赋值时候的区别是什么?

 

以上是关于K&R阅读笔记——指针的主要内容,如果未能解决你的问题,请参考以下文章

c和指针阅读笔记

C语言学习笔记--指针阅读技巧

golang gc阅读笔记

《More Effective C++》阅读笔记

C++ Prime 0x0C 学习笔记

阅读笔记《C程序员 从校园到职场》第七章 指针和结构体