栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

行指针和列指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

行指针和列指针

1.C语言22_行指针和列指针_哔哩哔哩_bilibili
#include
using namespace std;

int main() {

	int a[2][3] = { 1,2,3,4,5,6 };
	cout << *a[0] << endl;//1,相当于a[0][0]
	cout << *(a[1]+1) << endl;//5
	cout << **a << endl;//1
	cout << **(a+1) << endl;//4

	return 0;
}

 

  2.已知int a[4][3] = { 1,2,3,4,5,6,7,8,9,10,11,12 };int(*ptr)[3] = a,*p=a[0],则以下能正确表示数组元素a[1][2]的是_____

A.*((ptr + 1)[2])

B.*(*(p + 5))

C.(*ptr + 1) + 2

D.*(*(a + 1) + 2)

 【答案】D

 A.*((ptr + 1)[2])

ptr是个数组指针,指向的数据类型大小是3个字节,(ptr+1)[2] 相当于 ptr+3,指针+1,地址就加上数据类型的长度,这里是3,ptr+3就是地址+9.,即a[9]=10. a[2]就是a+2,a[2]是*(a+2)

B.*(*(p + 5))        //报错,*的操作数必须是指针 ,*(*(p+5))=*(*(p+5)+0)=a[5][0]不存在

C.(*ptr + 1) + 2 = *ptr+1+2= *ptr+3=&[*(*ptr + 3)]=*(*ptr + 3)的地址 

cout << *(*ptr + 3) << endl;//4=a[3]

D.*(*(a + 1) + 2)=a[1][2]    bingo

 可以调试代码理解一下:

#include
using namespace std;

int main() {

	int a[4][3] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
	int(*ptr)[3] = a, *p = a[0];
	//cout << a[1][2] << endl;//6
	//选项A
	//cout << *((ptr + 1)[2]) << endl;//10
	//选项B
	//cout << *(*(p + 5)) << endl;//报错,*的操作数必须是指针
	//选项C
	//cout << (*ptr + 1) << endl;//a[0][1]=2的地址值  00F3FAF0
	//cout << *(*ptr + 1) << endl;//2
	//cout << *(*ptr + 1) + 2 << endl;//a[0][1]+2=2+2=4

	//cout << (*ptr + 1) + 2 << endl;//00F3FAF8
	cout << *(*ptr + 3) << endl;//4
	cout <<*ptr + 3 << endl;//=&*(*ptr + 3)=*(*ptr + 3)的地址
	cout << *ptr  << endl;//00F3FAF8
	//选项D
	//cout << *(*(a + 1) + 2) << endl;//a[1][2]=6

	return 0;
}
3.阅读程序,写出输出。
void fun(char *a, char *b) {
	a = b;
	(*a)++;
}
int main() {
	char c1 = 'A', c2 = 'a', *p1, *p2;
	p1 = &c1;
	p2 = &c2;
	fun(p1, p2);
	cout << c1 << 't' << c2<< endl;//A       b
	return 0;
}

 【答案】A        b

【解析】a和b都指向c2,所以就没有指针指向c1,所以c1的值没变它的值没有变过,fun中*a=b。p1指向c1,所以main里面 *p1=A。

4.程序阅读,写出输出。
void gets(int *p1, int *p2, int *s) {
	int t;
	t = *p1 + *p2;
	s = &t;
	cout << *s << endl;
}

int main() {
	int a = 3, b = 5, *p1 = &a, *p2 = &b, *s = &a;
	gets(p1, p2, s);//8
	cout << *s << endl;//3 ,和函数体中的s无关,指向没变
	return 0;
}

【答案】83

 

 如有错误,敬请指正,谢谢!!!
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号