评论

收藏

[办公软件] 一张图秒懂C语言( 指针 )

电脑办公 电脑办公 发布于:2021-12-30 17:49 | 阅读数:581 | 评论:0

c语言这张图总结的非常好
分享给大家
DSC0000.png

C语言指针初涉
一个简单的问题:
你的一个朋友搬家了,你来到她住的那栋大厦,你怎么样才能够找到她呢?当然是知道房号啦!那么你怎么知道房号呢?
她之前没和你说房号;你就需要向楼道保安咨询她所在的房号了
间接访问

通过指针指向变量,先获得变量地址,然后根据地址去访问对应的存储单元

她搬家前和你说了她的房号,那么你就可以直接去找她的房间了
直接访问

通过变量名或者地址直接访问变量
指针的使用
指针变量的定义
类型说明符号 *变量名
​​int *p​​ :指向整型变量的指针变量
​​float *q​​:指向浮点型变量的指针变量
指针变量的初始化与赋值
可以使用&取得变量的地址
int a; 
*p = &q;
*q=p;
让p指向a后;又把地址赋值给q,所以p和q都指向同一变量a
通过指针变量访问变量
可以使用*(间接访问运算符)来访问指针所指向的变量
int a=100,b; 
int *p = &a;
b = *p; 
//将p指向的a变量的值赋给变量b
案例
#include int main(){ 
  int a = 10,b; 
  int *p,*q; 
  //取得a变量的地址赋值给p 
  p = &a; 
  b = *p + 3; 
  //如果p指向的内存中的数据 + 1,a会等于多少 ? 
  *p = *p + 1; 
  printf("%d,%d\n",a,b); 
  //我们把p的地址赋给q,然后对q+1,a会不会发生变化呢?  
  q = p; 
  *q = *q + 1; 
  printf("%d,%d\n",a,b);  
  return 0;
}
输出结果:11,1312,13


指针与一维数组
指向数组元素
用指针指向数组中的某个元素:
int a[4]; 
int *p;  
p = &a[3];

将数组中的第4个元素的地址赋值给p
指向数组
用指针指向数组,其实数组名存储的是整个数组的起始地址
int a[5];  
int *p;  
p = a;
将数组的起始地址赋值给指针p
引用数组元素
引用数组元素的方式有三种:eg:
int a[5],int p;
访问数组的第3个元素
a[2]
*(a+2)
*(p + 2)
这三种方式是等价的 即:
p+2 = &a[2]
代码示例:
将数组的第一个元素与最后一个元素调换位置,第二个与倒数第二个交换…
#include int main(){ 
  int a[10] = {1,2,3,4,5,6,7,8,9,10}; 
  int *p = a,*q = &a[9]; 
  int i,num;  
  while(p <= q) {  
  num = *q;  
  *q = *p;  
  *p = num; 
  //将指针p后移一个单位;  //将指针q前移一个单位   
  p++;
  q--;  
  } 
  printf("输出交换后的数组:\n"); 

  for(i = 0;i < 10;i++) { 
  printf("%d  ",a[i]); 
  } 

  printf("\n"); 
  return 0;}
输出结果:10,9,8,7,6,5,4,3,2,1
指针与字符串

字符串的定义:除了之前学过的:​​char str[] = "Hello"​​外;
现在我们可以使用另外一种方式定义一个字符数组:​​char *str = "Hello"​​
①系统为​​"Hello"​​分配连续的内存空间
②将存储空间的首地址给指针str
#include int main(){ 
 int num = 0; 
 char *str = "How do you do!";
 for(;*str;str++) {  
   if(*str == 'o')num++; 
 } 
 printf("字符串中o出现了%d次\n",num); 
 return 0;
}

输出:字符串中o出现了4次


关注下面的标签,发现更多相似文章