From:http://soft.chinabyte.com/database/339/12423339.shtml 最近在百度知道里面发现很多学习初学者搞不清楚行指针的具体概念,今天在这里作下详细的解释分析。 行指针,顾名思义就是指向一行的指针。那么哪里会用到行指针呢,用的最多的,那就是二维指针了,大家都知道,我们通常把二维指针看成一个行列式,但是它在内存中的排序却是和一维指针一样的。 比如组a[2][3]={{1,2,3}{4,5,6}},a是整个数组的首地址,同时...
//// main.c// Pointer_function//// Created by ma c on 15/8/2.// Copyright (c) 2015年 bjsxt. All rights reserved.// 要求:通过指针函数,输入学生学号时,在控制台上显示对应的学生成绩。 #include <stdio.h>float *search(float(*p)[4],int n)//float(*p)[4]是数组指针,指向有4个float元素的二位数组的首行{ float *pt; pt = *(p + n); return pt;}int main(int argc, const char * argv[]){ float score...
1单词长度(4分)题目内容:你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it‘s”算一个单词,长度为4。注意,行中可能出现连续的空格。 输入格式:输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。 输出格式:在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有...
数组: 声明方法: 1.datatype arr[]={0}; //个数由{}内元素个数决定 2.datatype arr[N]; //N必须大于0 3.datatype arr[N]={1,2,3}; //{}内个数不能超过N;若个数小于N,则未初始化的元素默认为0 4.datatype arr[5]={1,2,[4]=2,3,[1]=0}; //其元素为:1,0,0,2,3 5.若N为变量,则arr[N]为变长数组,声明时不允许初始化。 6.复合字面量:(datatype [N]){1,2,3...
自我们开始学习C语言中的指针,老师就说返回函数局部变量的地址是没有意义的,因为函数调用完毕,系统回收函数中用到各种资源,函数栈顶指针向高位地址移动。指针指向的内容已经被释放,返回的指针会指向不可预料的内容。我们可以从C程序的内存布局讲起(详细内容,请查看超链接内容,本片文章只会讲解与本篇文章相关的内容)。 C语言的内存布局具体可以分为五部分:栈(stack):是一个先进后出的数据结构,和函数调用相关(函数...
.作者 : 万境绝尘转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshuliang.com/?post=29.1. C语言命令行参数详解命令行参数 : 有两个参数 int argc 和 char **argv;-- argc : 标示输入的参数个数, 注意命令本身也是参数;-- argv : 指向 字符串数组的指针, 每个字符串是一个参数;-- 约定 : argv[0] 是 程序名称, argc 的最小值是1, 如果argc 是1, 那么说明 命令后面没有参数;(1) 模仿...
知识点: ? 指针与变量 (指向变量的指针)? 指针与函数 (地址传递) ? 指针与数组 (指向数组的指针) ? 指针与字符串=================================数组的指针 1.什么是数组指针 1)数组的指针是指数组在内存的的起始位置 2)数组的第一个元素和数组的起始地址一致 2.数组名的本质 1)数组名本质上是一个地址常量,代表的是数组的首地址也就是第一个元素的地址 数组名表示表示数组的起始地址,不表示整个数组,不能对...
考虑该例子: int calendar[12][31];该语句声明了calendar是一个数组,该数组拥有12个数组元素,其中每个元素都是一个拥有31个整型元素的数组(而不是反过来理解)。因此,sizeof(calendar)的值是12*31=372与sizeof(int)的乘积。如果calendar不是用于sizeof的操作数,而是用于其他的场合,那么calendar总是被转换为一个指向calendar数组的起始元素的指针。要理解上面这句话的含义,就得先理解有关指针的一些细节。 任何指针都...
数组的名称就是数组再内存中的首地址。若定义一个指针变量,并将数组的首地址传给指针变量,则该指针就指向了这个一维数组例如:int *p,a[10]p=a;此时就是将数组a的首地址赋给p也可以写成如下形式:p=&a[0] 注意:在使用数组指针的时候,输入可以写成 对于一维数组:int a[10];p=a;(或p=&a[0])forscanf("%d",p++) //此时p相当于&a[0]printf("%d",*p 对于一维数组: #include<stdio.h> int main(void){int i, *p;int a[10];p = a;f...
通过指向结构体变量的指针变量输出结构体变量中成员的信息。解:程序:#include<stdio.h>#include<string.h>int main(){struct Student{long int num;char name[20];char sex[10];float score;};struct Student stu_1;//定义struct Student类型的变量stu_1struct Student *p;p = &stu_1;stu_1.num = 1010;strcpy(stu_1.name, "Li Lin");//用字符串复制给stu_1.name赋值strcpy(stu_1.sex, "Man");stu_1.score = 89.5;printf("num:%l...
说明: 第一篇回顾了指针的基本概念以及基本使用,因此对指针也有了一个较为清晰的思路,但实际上第一篇关于指针的内容是不太容易忘记的。这是第二篇中的内容是比较容易混淆,但对于指针的进一步学习也是非常重要的。一.指向函数的指针1.函数指针·函数指针即指向函数的指针,函数指针值为函数的入口地址,通过使用该指针,即可以使用该函数;·编写一个程序返回两个数的最大值,通过函数指针调用函数:a.main函数代码如下:#incl...
//用指针函数完成:有a个学生,每个学生有b门课。要求在输入学生序号后输出该学生成绩
#include <stdio.h>
float * search(float (* pointer )[4],int n) //形参pointer是一个数组指针
{float *pt;pt=*(pointer+n);return pt;
}
int main()
{float score[][4]={{60,70,80,90},{56,57,78,85},{75,45,36,85}};float *p;int i,n;printf("请输入学生序号:");scanf("%d",&n);printf("第%d个学生的成绩为:\n",n);p=search(score,n);f...
第三节课作业 指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。1)#include<stdio.h>int main(){ int *ptr; // 声明一个int指针 int val = 1; // 声明一个int值 ptr = &val; // 为指针分配一个int值的引用 int deref = *ptr; // 对指针进行取值,打印存储在指针地址中的内...
#include<stdio.h>
#include<iostream>void reverse(int* a, int length) {int* p, temp, * i, * j, m;m = (length - 1) / 2;//取得中间的下标i = a;//i指向数组的首元素j = a + length - 1;//j指向数组的尾元素p = a + m;//p指向数组中间的元素for(; i < p; i++,j--){//依次交换首位元素的值temp = *i;*i = *j;*j = temp;}
}
void printArr(int arr[],int length) {for (int i = 0; i < length; i++){printf("%d ", arr[i]);}putc...
题一:答案:解析:unsigned long*指针变量pulPtrunsigned long数组名pulArray是数组首元素地址所以指针变量pulPtr存储的是数组首元素的地址pulArray是数组首元素地址+3,跳过3个元素的地址,来到第四个元素的地址解引用一下,得到第四个元素,+=3,第四个元素将9改为12解引用指针变量pulPtr找到数组第一个元素,6pulPtr存储的还是数组首元素的地址,+3后解引用,得到数组的改变后的第四个元素,12题二:答案:B解析:二级指针,也...