逻辑运算&指针

不要把赋值运算写进逻辑运算里,逻辑运算都是从左到右进行的。

对于&&来说左边如果不成立,右边就不会进行计算了

对于||来说则刚好相反

逗号优先级最低,且用途很单一。编程中很少出现拿逗号来进行计算的


                                                                                                               指针

好习惯:在定义一个指针时初始化为0

不同类型的指针不能相互赋值

 

void*与void详解https://blog.csdn.net/xautfengzi/article/details/2290741

&取变量的地址,并不能取表达式(表达式是没有地址的

*取内容运算符,取得所在地址的值

因为各个函数之间只能做值的传递,而指针起到了用某一变量穿插在各个函数的作用

***************************************************************数组与指针**************************************************************************

数组是特殊的指针变量

数组变量本身表达地址所以在取数组变量时无需用&

但是数组单元是变量同样需要&取地址

数组时:int a[10]; int *p=a;(其实指向的是数组的第一个元素的地址)

数组变量时:int *p==&a[2];(需要用&取地址)

整形变量时 : int a ;  int  *p=&a;(需要用&取地址)

数组是const的指针,无法被赋值


————————————————————————指针运算————————————————————————————

 把指针+1是让指针指向下一个变量,而如果指向的不是一片连续存储的空间(ex:数组)那么这样的指针运算就没有意义

————————————————————指针常量和常量指针 (易混)———————————————————————

指针常量→指针型的常量

*在const前面  ex: int *const p=&i

指针p是一个const,p永远指向i并因此可以通过p来修改i 的值

# include <stdio.h>

 int main ()
 {
 	 int i=64;
 	int *const p=&i;//指针p永远指向i
 	 printf("%d\n",i)
        *p=45;
 	 printf("%d\n",*p);
 	 printf("%d\n",i);
 	 
	return 0;
	 
   }

常量指针→常量型的指针

*在const的后面   ex: const int *p=&i OR int const *p

指针p可以指向i也可以指向j,但因此也失去了修改变量的能力

# include <stdio.h>

 int main ()
 {
 	 int i=64;
     int j=89
 	int const* p=&i;
 	  *p=45;//错误
      *p=j//不可以的
       p=j//可以的
 	 printf("%d\n",*p);
 	 printf("%d\n",i);
 	 
	return 0;
	 
	 }

p和*p和&p的区别https://blog.csdn.net/zandaoguang/article/details/77161577(较为简单)

                              https://zhidao.baidu.com/question/872413254876148412.html(教复杂,其中提到悬浮指针的概念)

————————————————————*在表达式和声明数据类型中的区别—————————————————————

*在声明数据类型中仅仅表示类型为指针

*在表达式中则是取地址内容运算符,ex:

p—》指针p指向的地址 

&p—》指针p存储在内存中的地址

*p—》指针p指向的地址中的内容  

————————————————————————malloc(分配内存)函数———————————————————————

函数原型 malloc(long NumBytes)

free和malloc函数类型都是指针 

free是与malloc配套的一个函数,在malloc借用了电脑的内存后需要用free释放这些内存(值得注意的是free) 

 malloc函数在中申请一部分空间(实际上malloc占用的空间比申请的略大,多出来的部分是记录malloc函数的管理信息),如果开辟成功,返回空间首个字节地址,失败则返回NULL

free(free的地址在栈上,释放的内存则在上)只能返还(其实是释放)malloc借来的地址,

free函数一般形式 free(借用内存的表达式)

malloc与free函数原理https://blog.csdn.net/llhyy17/article/details/5375298

进程是什么?线程又是什么https://blog.csdn.net/C2496649361/article/details/80655068(关于栈和堆的粗略印象)

发布了42 篇原创文章 · 获赞 23 · 访问量 2346

猜你喜欢

转载自blog.csdn.net/qq_40710190/article/details/99691542