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(tmpaaabbbccc"");

p2 = tmp;return 0;

}

void main()
{
int i = 0;
char* buf;
getMemBuf(buf);

printf(""%sn"" buf);free (buf);system(""pause"");

}

解决方案二:
数组确实是相当于一级指针,但是是常量指针,其值不能被修改。
任何试图修改数组名的操作,会引起程序严重异常。

解决方案三:
数组名仅仅是“相当”于指针,而并非真的是指针,只是个常量(一个值为数组首元素地址的常量),所以不能进行++或者--运算。
而常量更是无法取地址的, 你使用的给数组名取地址它代表了数组本身可不是简单的二级指针

时间: 2024-12-03 04:39:25

c语言-C语言中二级指针修改数组问题。的相关文章

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中二级指针与结构体的问题 #include #include typedef struct node{ int num; char ch; }NODE; int main(void){ int n,i; NODE F; printf("input n:"); scanf("%d",&n); F=(NODE)malloc(n*sizeof(NODE*)); printf("input num and ch:");

C++中的指针、数组指针与指针数组、函数指针与指针函数

C++中的指针.数组指针与指针数组.函数指针与指针函数 本文从初学者的角度,深入浅出地详解什么是指针.如何使用指针.如何定义指针.如何定义数组指针和函数指针,并给出对应的实例演示:接着,区别了数组指针与指针数组.函数指针与指针函数:最后,对最常混淆的引用传递.值传递和指针传递做了区处. C++中一个重要的特性就是指针,指针不仅具有获得地址的能力,还具有操作地址的能力.指针可以用于数组.或作为函数的参数,用来访问内存和对内存的操作,指针的使用使得C++很高效,但是指针也非常危险,使用不当会带来比较

详解C++中的指针、数组指针与函数指针_C 语言

C++中一个重要的特性就是指针,指针不仅具有获得地址的能力,还具有操作地址的能力.指针可以用于数组.或作为函数的参数,用来访问内存和对内存的操作,指针的使用使得C++很高效,但是指针也非常危险,使用不当会带来比较严重的问题. 1.指针 程序中所有的变量和常量都存在一个内存地址中,当然,函数也有对应的内存地址,内存地址的不同会导致程序执行时有所不同. 指针就是用来控制和存储内存地址的变量,它指向单个对象的地址,除了void之外,指针的数据类型与所指向地址的变量数据类型保持一致. 2.如何定义指针.

C语言二分查找法(指针和数组实现)

/* * 编写一个函数,对一个已排序的整数表执行二分查找. * 函数的输入包括各异指向表头的指针,表中的元素个数,以及待查找的数值. * 函数的输出时一个指向满足查找要求的元素的指针,当未查找到要求的数值时,输出一个NULL指针 * 用两个版本实现,一个用的是数组小标,第二个用的是指针 * 他们均采用了不对称边界 * Copyright (c) 2012 LiMing Author: LiMing 2012-06-21 referenced C Traps and Pitfaills Chine

如何用vb.net语言将datagridview中的数据以数组的形式在程序中显示

问题描述 我用vb.net将.csv文件在datagridview中显示出来,现在想把数据用数组的形式显示,怎么编写代码 解决方案 解决方案二:可以将DataGridView单元格的数据赋给一个二维数组,但数组是用来存储数据的,显示就不行了解决方案三:那怎样编写代码,进行赋值呢????解决方案四:DimSum(n,m)asString'n,m即单元格总行.列数-1Fori=0TonForj=0TomSum(i,j)=DataGridView1.Item(j,i).ValueNextNext

C语言 socket 如何发送带指针的结构体?

问题描述 C语言 socket 如何发送带指针的结构体? 发送一个带指针的结构体,我知道怎么发送? 先把结构体转换成字符串,然后发出.但是接收的时候,怎么接收到结构体中?thanks! 解决方案 发送: struct f;char *ffff[sizeof(f)];memcpy(ffff &f sizeof(f)); 接收: struct f; ffff为收到的数据 memcpy(&f ffff sizeof(ffff)); 解决方案二: C语言---结构体指针C语言--结构体中的指针C语

c语言-C语言结构体的指针问题。

问题描述 C语言结构体的指针问题. struct GenInfo { uint64_t (*next)(struct GenInfo * const); enum GeneratorType type; union { struct GenInfo_Constant constant; struct GenInfo_Counter counter; struct GenInfo_Discrete discrete; struct GenInfo_Exponential exponential;

c语言-C语言小白提问```求大神

问题描述 C语言小白提问```求大神 float search(float (*p)[4]){ float *pt = NULL; for (int i = 0; i < 4; i++) { if ((*p + i) < 60) { pt = *p; } } return pt; } int main(int argc, const char * argv[]) { float score[][4] = {{60,70,80,90},{56,86,97,68},{57,58,98,95}};