c语言中有关指针的问题

问题描述

c语言中有关指针的问题

int *p1[3]
int (*p2)[3]
int *(*p3)[3]
int **p4[3]
=============上面的这些应该怎样去理解和分析啊?指针这方面刚入门
很多的不太懂,希望能详细解释上面的指针的情况,万分感谢!

解决方案

呵呵,不要这样片面的的拿几个例子,建议去好好理解下面的几个概念:
1.指针 2。指针数组 3 。数组指针 4。函数指针 5.函数指针数组 6.函数指针数组指针。
这几个概念从前往后依此理解,不然会晕。

解决方案二:

这个问题问得好,这是指针的基础问题:
1. p1是数组,有三个元素,每个元素是一个整形指针。(指针数组)
2. p2是指针,指向一个数组,数组的每个元素是一个整形值。(数组指针)
3.p3是指针,指向一个指针,这个指针指向一个整形数组。(指向整形数组指针的指针)
4.p4是数组,每个元素是指向整形指针的指针。(指向指针的数组)

时间: 2024-12-03 15:24:39

c语言中有关指针的问题的相关文章

C语言中常量指针与指针常量区别浅析

这篇文章主要介绍了C语言中常量指针与指针常量区别,有需要的朋友可以参考一下 常量指针是指--指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量. 指针常量是指--指针本身是常量.它指向的地址是不可改变的,但地址里的内容可以通过指针改变.它指向的地址将伴其一生,直到生命周期结束.有一点需要注意的是,指针常量在定义时必须同时赋初值. 注:也有人将这两个名称的定义与含义

Go语言中的指针运算实例分析_Golang

本文实例分析了Go语言中的指针运算方法.分享给大家供大家参考.具体分析如下: Go语言的语法上是不支持指针运算的,所有指针都在可控的一个范围内使用,没有C语言的*void然后随意转换指针类型这样的东西.最近在思考Go如何操作共享内存,共享内存就需要把指针转成不同类型或者对指针进行运算再获取数据. 这里对Go语言内置的unsafe模块做了一个实验,发现通过unsafe模块,Go语言一样可以做指针运算,只是比C的方式繁琐一些,但是理解上是一样的. 下面是实验代码: 复制代码 代码如下: packag

c语言-C语言中的指针和数组的初始化

问题描述 C语言中的指针和数组的初始化 char a[]=""abcdef"";char *p =""cdefg"";a[1]='A';p[1]='A'; 这段代码有什么问题?#include int main(){ char amessage[]=""now is the time""; char *pmessage = ""now is the time"

c 指针 分配-C语言中通过指针能不能知道它在内存中的分配方案

问题描述 C语言中通过指针能不能知道它在内存中的分配方案 例如char* pstr; 有几种方式: pstr = "123"; char s[] = "123"; pstr = s; pstr = (char*)malloc(4); pstr[0] = '1'; pstr[1] = '2'; pstr[2] = '3'; pstr[3] = ''; 那么,如何通过pstr判断它是哪种方式的? 解决方案 这两种的结果都是一样的不必纠结,只有数组和指针在分配的时候是不同

c语言-C语言中二级指针修改数组问题。

问题描述 C语言中二级指针修改数组问题. 数组相当于一级指针,我写了一个二级指针被调用.结果它总是宕机,求指导,谢谢. 解决方案 这段程序编译会报错吧:cannot convert parameter 1 from 'char (*)[100]' to 'char **' 可以这样 试试看#include #include #include int getMemBuf(char*& p2){ char* tmp = NULL; tmp = (char*)malloc(100); strcpy(t

非递归二叉树遍历-c语言中函数指针作为参数与函数的嵌套

问题描述 c语言中函数指针作为参数与函数的嵌套 函数指针作为另一函数的参数和函数的嵌套的区别,感觉都是调用,有什么不一样呢?他们都适用在什么情况下!(我是在学非递归遍历二叉树时看到的) Status Visit(TElemType e){ printf("%cn",e); return OK; } Status InOrderTraverse(BiTree T ,Status(*Visit)(TElemType e)){ SqStack S; InitStack(S); Push(S,

c语言-C语言中这个指针定义是什么意思?

问题描述 C语言中这个指针定义是什么意思? const char *const ch 为什么要2个const?分别是什么意思?顺便求详细说一下这个指针具体是什么意思? 编辑下,完整程序如下: #include #include #include #include int find_char(const int, const char *const, const int); int main(int argc, char argv) { bool translate = false, squeez

c语言-C语言中的指针转换问题

问题描述 C语言中的指针转换问题 代码如下 # include<stdio.h> int main() { unsigned int a = 0xfffffff7 ; unsigned char i = (unsigned char)a ; char *b = (char *)&a ;//让b指向a的地址 printf ("%x, %x ", i, *b) ;//不懂:*b应该是char类型的,为什么结果会是4个字节? printf ("%08x, %08

C语言中的指针和内存泄漏

引言 对于任何使用C语言的人,如果问他们C语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是一旦您了解了指针及其关联内存操作的基础,它们就是您在 C 语言中拥有的最强大工具. 本文将与您分享开发人员在开始使用指针来编程前应该知道的秘密.本文内容包括: 导致内存破坏的指针操作类型 在使用动态内存分配时必须考虑的检查点 导致内存泄漏的场景 如果您预先知道什么地方可能出错,那么您就能够小心避免陷