c语言指针

c语言 指针数组

╄→гoц情女王★ 提交于 2020-01-15 04:46:49
指针数组 指针数组是数组,指针数组每个元素是一个指针 指针数组的定义:type* parray[n]; type* 是数组中每个元素的类型 parray 为数组名 n为大小 例子: float* a[3] //a是一个数组,每个元素的类型是float* code: #include <stdio.h> #include <string.h> #define DIM(a) (sizeof(a)/sizeof(*a)) int lookup_keyword(const char* key, const char* table[], const int size) { int ret = -1; int i = 0; for(i=0; i<size; i++) { if( strcmp(key, table[i]) == 0 ) { ret = i; break; } } return ret; } int main() { const char* keyword[] = { "do", "for", "if", "register", "return", "switch", "while", "case", "static" }; printf("%d\n", lookup_keyword("return", keyword, DIM(keyword))); printf("%d\n"

C语言笔记—结构体2

十年热恋 提交于 2020-01-14 09:19:19
C语言笔记—结构体2 1. 结构体操作 1.1 取地址 1.2 传参 2. 结构体指针 3. 结构数组 4. 结构体嵌套 5. 使用结构体 1. 结构体操作 1.1 取地址 struct Point3D { int x ; int y ; int z ; } ; struct Point3D p = { 1 , 2 , 3 } ; printf ( "&p = %p\n" , & p ) ; printf ( "&(p.x) = %p\n" , & p . x ) ; printf ( "&(p.y) = %p\n" , & p . y ) ; printf ( "&(p.z) = %p\n" , & p . z ) ; 结构体名不是结构体变量的地址,必须使用 & 获取地址。 数组名即地址。 1.2 传参 void Print ( struct Point3D p ) { printf ( "(%d,%d,%d)" , p . x , p . y , p . z ) ; } 整个结构体作为参数的值传入函数。这时候在函数内新建一个结构体变量并复制值。结构体可以作为返回值,也是结构体整体复制。 2. 结构体指针 struct Point3D p = { 1 , 2 , 3 } ; struct Point3D * q = & p ; 结构体指针访问成员

第六周作业

瘦欲@ 提交于 2020-01-14 08:58:58
2019年春季第六次作业 这个作业属于哪个课程 C语言程序设计 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2888 我在这个课程的目标是 学习指针,方便我找到最大值最小值 这个作业在哪个具体方面帮助我实现目标 指针的基本用法 参考文献 中国大学mooc 6-1 求两数平方根之和 函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double a, double b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: #include<stdio.h> #include <math.h> double fun (double *a, double *b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%.2f\n", y ); return 0; } /* 请在这里填写答案 */ 输入样例: 12 20 输出样例: y=7.94 我的答案 double fun

C语言指针练习1

戏子无情 提交于 2020-01-14 08:53:40
练习题一、char类型占几字节?char*类型占几字节?int*****占几字节? char类型占1字节,char 类型占4字节,int *****占4字节。 练习题二、char** arr[10] 占多少个字节? char** arr[10] 占40字节 练习题三、 自定义结构体如下: struct Student { int x; int y; }; 第一步: ```c Student**** s; s = (Student****)100; s++; //s的值是多少? s = s+2; //s的值是多少? s = s-3; //s的值是多少? S++等于100+1 4=104 s =s+2 等于104+2 4=112 s =s-3 等于112-2*3=106 第二步: Student * * * * s1 ; Student * * * * s2 ; int x ; s1 = ( Student * * * * ) 200 ; s2 = ( Student * * * * ) 100 ; x = s1 - s2 ; //x的值是多少? x = s1-s2等于(200-100)/4=25 来源: CSDN 作者: oMuZiLi1 链接: https://blog.csdn.net/oMuZiLi1/article/details/103933173

C语言指针小应用

早过忘川 提交于 2020-01-14 02:44:45
C语言指针小应用:如何用指针实现多个变量值的交换? 方法一:不交换变量的值,交换两个指针变量的值。 # include "stdafx.h" int main ( int argc , char * argv [ ] ) { int a , b ; //定义两个整形变量 int * pointer_1 , * pointer_2 ; //定义两个指针变量 pointer_1 = & a ; pointer_2 = & b ; //将a和b的地址赋个指针变量 printf ( "please input the values of a and b.\n" ) ; scanf ( "%d%d" , & a , & b ) ; if ( a < b ) { pointer_2 = & a ; pointer_1 = & b ; } //a<b,则交换指针所指向的地址 printf ( "max=%d min=%d\n" , * pointer_1 , * pointer_2 ) ; return 0 ; } 方法二:交换指针变量所指变量的值 # include "stdafx.h" void swap ( int * x , int * y ) ; int main ( int argc , char * argv [ ] ) { int a , b ; int * pointer_1

第六周作业

别说谁变了你拦得住时间么 提交于 2020-01-14 01:53:41
这个作业属于那个课程 c语言程序设计 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2889 我在这个课程的目标是 初步了解指针 这个作业在那个具体方面帮助我实现目标 指针的使用 参考文献 课本C语言程序设计 6-1 求两数平方根之和 (10 分) 函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double a, double b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: #include<stdio.h> #include <math.h> double fun (double *a, double *b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%.2f\n", y ); return 0; } /* 请在这里填写答案 */ 输入样例: 12 20 输出样例: y=7.94 (1)实验代码 #include<stdio.h>

重新认识C语言的指针(上)

◇◆丶佛笑我妖孽 提交于 2020-01-13 09:10:22
​ 独创性并不是首次观察某种新事物,而是把旧的、很早就是已知的,或者是人人都视而不见的事物当新事物观察,这才证明是有真正的独创头脑 —尼采 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。 https://github.com/midou-tech/articles 点关注,不迷路!!! 序言  指针是C语言学习者绕不过的一道坎,也是C语言学习者不得绕过的一道坎。辨别一个人C语言学的好赖就看他对指针的理解怎么样。指针内容也是工作面试经常问到的问题。本文将带你重新认识那个绊倒你的指针,以解大家的心头之惑(恨)。 为什么要学习指针?  有同学就要说了,既然指针这么难,这么不通俗易懂,为什么要学习他呢?其他高级语言都是把这块基本屏蔽掉了,不在让程序员直接操作指针,这里不直接操作指的是不让程序员用指针进行运算和强转而不是彻底没有了。举个java的例子 Object obj= new Object();Object sec= obj;sec = new Object();  如果你去仔细研究他们的行为,就会发现 obj, sec 都只是一个指向对象的东西,可以为空,也可以修改指向,所以它们其实都是指针,只是 Java 的教材里面不在去提这东西而已,具体原因看我后面讲解便知道了。 ​ 继续说为什么学习指针,为什么学习指针就必须要说到指针的优点了。

错题集

僤鯓⒐⒋嵵緔 提交于 2020-01-13 07:24:18
错题集 直接访问就是直接利用变量的地址直接进行访问。 (√) //直接访问就是系统直接将变量所在内存单元的值取出,间接访问是直接访问变量地址。 结构体类型本身不占用内存空间,结构体变量占用内存空间。 (√) // 结构体类型的定义只是告诉编译器该如何表示数据,但是它没有让计算机为其分配空间。结构体类型的定义就是结构体的声明,不管是定义还是申明,这句话都是正确的。只有在结构体变量,声明的时候可以分配。要使用结构体,那么就需要创建变量,也就是结构体变量。 文件指针用于指向文件,文件只有被打开后才有对应的文件指针。 (√) //文件指针是指向一个文件的指针,确切的将是指向用文件这个结构体所定义的对象的起始地址。 变量被定义后 , 它的作用域和寿命就被确定了 , 并且不可改变。 (√) //作用域就是一个变量可以被引用的范围,生命周期就是这个变量可以被引用的时间段。每个作用域都有相对应的生命周期,变量被定义后,作用域和生命周期就被确定了 , 并且不可改变。 两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数。(√) //实际上是两个指针值(地址)相减之差再除以该数组元素的长度(字节数)。 在c语言中,不允许有常量的数据类型是(B ) A.整型 B.结构型 C.字符型 D.字符串 //结构型是基本数据类型的组合,没有单独的常量。 文件指针和位置指针都是随着文件的读写操作在不断改变

第六周编程总结

梦想的初衷 提交于 2020-01-13 03:05:44
一、作业 这个作业属于哪个课程 C语言程序设计ll 这个作业要求在哪里 ( https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2888 ) 我在这个课程的目标是 理解变量、内存单元和地址之间的关系,掌握指针变量的基本运算 这个作业在哪个具体方面帮助我实现目标 让我大概了解了指针的定义及用法 参考文献 ( https://jingyan.baidu.com/article/20095761754006cb0721b4bb.html ) 基础题 1、求两数平方根之和 函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double a, double b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: #include<stdio.h> #include <math.h> double fun (double *a, double *b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%

重新认识C语言指针(上)

北慕城南 提交于 2020-01-12 23:38:20
​ 独创性并不是首次观察某种新事物,而是把旧的、很早就是已知的,或者是人人都视而不见的事物当新事物观察,这才证明是有真正的独创头脑 —尼采 <p align="center">本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。</p> <h3 align="center"><a href=" https://github.com/midou-tech/articles " target="_blank"> https://github.com/midou-tech/articles</a></h3&gt ; <h4 style="color:red;text-align:center">点关注,不迷路!!! </h4> 序言  指针是C语言学习者绕不过的一道坎,也是C语言学习者不得绕过的一道坎。辨别一个人C语言学的好赖就看他对指针的理解怎么样。指针内容也是工作面试经常问到的问题。本文将带你重新认识那个绊倒你的指针,以解大家的心头之惑(恨)。 为什么要学习指针?  有同学就要说了,既然指针这么难,这么不通俗易懂,为什么要学习他呢?其他高级语言都是把这块基本屏蔽掉了,不在让程序员直接操作指针,这里不直接操作指的是不让程序员用指针进行运算和强转而不是彻底没有了。举个java的例子 Object obj= new Object(); Object sec= obj;