c++中函数如何抛空指针异常,刚刚学C++不太懂,谢谢各位指点! c语言指针的重要性

6183℃ LAUREN

c++中函数如何抛空指针异常,刚刚学C++不太懂,谢谢各位指点!c语言指针的重要性

学C语言指针和函数太难学了,我学了好久都难以搞明白,我现在很迷惘,我应该怎么办?

楼上的,这个都没有搞懂,看汇编不就等于看天书啊。

计算机中的函数和数学上的函数是不同的概念,之所以没看懂,可能是你把它和数学上的函数混淆了。也不了解你的实际情况,如果真的想学,可以加我,有什么问题我可以帮助你解决。

C语言指针异常

用vc6编译的吗?

vc6编译器对c的有些新语法不支持。

以前的c标准(标准号不记得了)要求函数必须在

开始处定义本函数的所有变量,否则就会报一些莫名奇妙的错。

新一些的编译器就没这个问题,想在哪定义变量都可以。

在函数开始处 char* op2;

后面 op2=

或者

用高版本的编译器编译。

供你参考。

C语言中如何将指针作为参数带入函数,没然在函数中转为数组,一一对应,谢谢啊

float* twoorderS(float *xt) //将*写在靠近返回值类型名后,*对返回值的限定不是函数,函数是没有类型的

{

int i;

float b[number-2];

float one[number-1];

for(i=0;i<(number-1);i++)

{

one[i]=xt[i]; //以下标形式访问指针,简化代码

if(i > 1)

b[i-1]=one[i]-one[i-1]; //滞后一步,节省空间

}

return b; //数组b作右值时为数组首元素的地址,就是指针(和指针形式一样)

}

我把代码给简化了,并去掉了打印函数,你好好看看。你的程序没有问题,但是关键问题是你计算的数值都是Double型的,你的函数的变量在栈中存不了那么多,发生溢出,那程序就会出错。我没有你这个程序的全部代码,没法检测,你可以把double都改为int,估计可以在多算两个。

如果你真想用double并想算的数大,就使用malloc()函数给指针在堆中分配内存,结束时用free()释放就行了,当然这个前提是你对指针很熟悉,不让你很容易出错!

还有,楼上说数组的问题。数组这样在DEV C++上定义没有问题,但是换到VS2008就说不能分配常量大小为0的数组,这个跟编译器有点关系

C++函数如何操作堆栈指针esp

如果用VC x86版本的编译器可以使用 __asm 关键字然后里面使用内嵌汇编语句;但是 VC x64编译器不支持内嵌汇编,你可以用 C/C++-ASM混合编程,创建一个.asm源码里面写汇编语句,然后ml64汇编后和C++的目标文件连接;还可以用编译器内建函数(intrinsics)里面就有操作esp的函数,可以MSDN上搜一下intrinsics