2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > c语言指针和结构体(B站鹏哥讲解版)

c语言指针和结构体(B站鹏哥讲解版)

时间:2023-12-25 00:59:56

相关推荐

c语言指针和结构体(B站鹏哥讲解版)

一.指针初阶

1.指针类型决定了:指针解引用的权限有多大。

char 型改变两个字节,int改变8个字节。

2.指针类型决定了指针走一步走多远。

int加4,char加1,double加8

3.

4.野指针产生

1)局部指针变量不初始化将是一个随机值

2)越界访问

3)指针指向空间释放

函数test中的a的地址在return之后地址就被释放了,所以main函数调用的时候就是非法访问。

5.如何避免野指针

当你不清楚指针收否是空指针时,使用if语句

6.指针的运算

1)指针加减整数

将数组的各元素赋值为0。

2)指针-指针

指针-指针得到的是两个指针之间的元素个数,相减的前提是两个指针指向同一块空间。

利用指针-指针来表示strlen函数。

3)指针的关系运算

7.指针和数组

数组本质

8.二级指针变量

二级指针变量是用来存放一级指针变量地址的

9.指针数组

存放指针的数组就是指针数组

用指针数组代替二维数组

二.指针练习题

题目链接(10条消息) C语言-指针练习(附答案)_c语言函数指针练习题_a婵a的博客-CSDN博客

1.求最大最小值

#include <stdio.h>int main(){int a[10] = {0};int* max = NULL;int* min =NULL;int i,j;for (j = 0; j< 10; j++){scanf_s("%d", &a[j]);}max = min = &a[0];for (i = 1; i < 10; i++) {if (*(a + i) > *max) {max = a + i;}else if (*(a + i) < *min) {min = a + i;}}printf("%d %d",*max,*min);return 0;}

2.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。最后输出这10个整数。

#include <stdio.h>int main(){int a[10] = {0};int* max = NULL;int* min=NULL;int i,j,k,t;for (j = 0; j< 10; j++){scanf_s("%d", &a[j]);}max = min = &a[0];for (i = 1; i < 10; i++) {if (*(a + i) > *max) {max = a + i;}else if (*(a + i) < *min) {min = a + i;}}t = *max, * max = a[9], a[9] = t;t = *min, * min = a[0], a[0] = t;for (k = 0; k < 10; k++){printf("%d ", a[k]);}return 0;}

3.两个变量交换

#include<stdio.h>void change(int* a, int*b){int t = 0;t=*a;* a = * b;* b = t;}int main(){int i=0, k=0;scanf_s("%d", &i);scanf_s("%d", &k);change(&i,&k);printf("%d %d", i, k);return 0;}

4.输出a[3][4]中的每一个元素

#include<stdio.h>int main(){int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };int a1[4] = { 1,2,3,4 };int a2[4] = { 5,6,7,8 };int a3[4] = { 9,10,11,12 };int i = 0,k=0;int* prr[3] = { a1,a2,a3 };for (i = 0; i < 4; i++){for (k = 0; k < 4; k++){printf("%d ", prr[i][k]);}printf("\n");}return 0;}

#include<stdio.h>int main(){int* p;int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };int i=0, j=0;for (p = a[0]; p < a[0] + 12; p++){if ((p - a[0]) % 4 == 0){printf("\n");}printf("%d", *p);}return 0;}

5.有一个班,3个学生,各学4门课,计算总平均分以及输出第n个学生的成绩

#include<stdio.h>int main(){int a[3][4] = { 1,2,3,4,5,6,7,8,9,1,2,3 };int i, j, k;int (*p)[4]=a;int sum = 0;for (i = 0; i < 12; i++){sum = sum + a[i];}float av = sum / 12.0;scanf_s("%d", &k);for (j = 0; j < 4; j++){printf("%d ", *(*(p + (k - 1)) + j));}return 0;}

三.结构体

1.什么是结构体

2.结构体申明

常用方法

结构体里面包含结构体

2.初始化和结构体里含有结构体的初始化以及变量输出

3.两种函数打印方式

4.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。