我一直有一个分段错误,但我不知道这意味着什么,也不知道是什么导致了它(我对编程和C非常陌生)。在这个函数中,由main.c调用,我需要确定二维数组中每一行最小数的索引。
这是我的代码:
#include "my.h"
void findfirstsmall (int x, int y, int** a)
{
int i;
int j;
int small;
small = y - 1;
printf("x = %3d, y = %3d\n", x, y); //trying t
我一直在这段代码中得到一个分段错误:
#include <stdio.h>
void FillArray(int *array, int);
#define MAX 256
int main()
{
int *array[MAX], size = 100;
FillArray(*array, size);
return 0;
}
void FillArray(int *array, int size)
{
int i, temp;
for (i = 0; i < size; i ++)
{
temp =
我正在做一个项目,该项目要求我保留用户最近输入的10个命令的数组,并创建了一个小测试程序,以确保我可以实际创建10个字符串的数组并将其打印出来。下面复制的代码在运行时会生成“分段错误: 11”,即使它在编译时没有任何警告或错误。我对c非常陌生,我知道这个任务需要一些指向字符数组的指针的组合,但我似乎不能让它工作。我需要做什么才能覆盖' history‘中10个索引中的任何一个的字符串,并通过调用printFullHistory()打印出当前的历史数组?
void printFullHistory(char** history){
for(int i = 0; i < si
在C++之旅中,有以下示例:
int count_x(char∗ p, char x)
// count the number of occurrences of x in p[]
// p is assumed to point to a zero-ter minated array of char (or to nothing)
{
int count = 0;
while (p)
{
if (∗p==x)
++count;
++p;
}
return count;
}
然后我测试了它,但它不起作用。因为它抛出了一个分段错误,所以我认为我所使用的
我使用了一个指针数组,其中每个索引都有一个指向整数数组的指针。虽然我能够弄清楚如何使用指针数组打印数组中的值,但有一行代码我需要弄清楚。我想了解**(x+i)和*(*x+i)之间的区别,因为前者抛出分段错误异常,而后者打印所需的输出。请参考下面的示例代码。
int pointer_array=malloc(1*sizeof(int*));
int number_array = malloc(2*sizeof(int));
*(pointer_array)=number_array;
for(int i=0;i<2;i++) {
*(pointer_array+i)=i;
}
for
我正在尝试用C语言返回并打印一个函数。在函数中打印输出效果很好,但是当我试图在从函数返回它之后打印它时,我得到的是胡言乱语。
我已经尝试了很多,我想我已经看到了至少6个类似的堆栈溢出帖子,这是我能做的最接近工作的事情,不是分段错误或错误。
代码:
char* getBitstring(unsigned short int instr) {
//this is what the code below is going to convert into. It is set to default
//as a 16 bit string full of zeros to act as
我在理解下面的指针代码数组时有点困惑
int main()
{
int *p={10,118,225};
printf("%d ",p); // Output will be 10
//printf("%d ",*p); Segmentation Fault error
p=20;
printf("%d ",p); // Overwrite the previous data
}
以下是我的问题
在学习指针时,我了解到在取
我是一个C编程新手(在很长一段时间后重新学习它)。我正在尝试使用malloc将内存动态分配给一个2D数组。我尝试过像和这样的stackoverflow上的答案。但我仍然会遇到分段错误。
我的代码如下
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
void allocate2DArray(int **subset, int a, int b)
{
subset = (int **)malloc( a * sizeof(int *));
int i,j;
for(i = 0
我有一个任务,需要阅读汇编代码,弄清楚它是做什么的,然后把它写成C代码。虽然我很难理解如何使用给定的C代码,但它是这样的:
typedef struct ELE *tree_ptr;
struct ELE {
long val;
tree_ptr left;
tree_ptr right;
};
使用这个原型(如果这很重要):
long traverse(tree_ptr tp);
谁能告诉我如何正确地创建一个,设置它的val字段,并打印它?这会导致分段故障:
int main () {
tree_ptr tp;
tp->val = 5;
谁能告诉我为什么这段代码不能工作?它总是显示分段错误
int main()
{
int a = 10;
int b = (int)&a;
int *c = (int*)b;
printf("%d", *c);
return 0;
}
当我打印c的值时,正如我所期望的那样,它是a的地址,但是当我遵守它时,发生了分段错误。假设这是一个32位编译器。
我正在尝试写一个函数,它返回从二进制文件读取的二维数组的指针。尽管我编译时没有出错,但当我尝试打印数组中的一个元素时,总是会出现分段错误。下面是我的代码:
double ** readArray(int rows, int cols)
{
int i;
double **myArray=malloc(rows*sizeof(double*));
if (myArray){
for (i=0; i < rows; i++)
{
myArray[i]=malloc(cols*sizeof(double));
}
}
以获取以下代码:
int (*ptr)[10];
int a[10]={99,1,2,3,4,5,6,7,8,9};
ptr=&a;
printf("%d",(*ptr)[1]);
它应该打印什么?我期待这里的垃圾值,但输出是1。
(我的结论是,以这种方式初始化指针数组,即ptr[10]将开始按顺序指向a[10]的元素)。
但是下面的代码片段如何呢:
int *ptr[10];
int a[10]={0,1,2,3,4,5,6,7,8,9};
*ptr=a;
printf("%d",*ptr[1]);
它给出了分段错误。
我使用malloc在C中创建一个数组,但是当我试图在两个循环中为数组分配随机值时,我得到了分段错误。
当我在1循环中为这个数组赋值时,没有分段错误。数组大小很大。请看我附上的密码。任何人都可以给我一个提示这是怎么回事。我对C很陌生。谢谢你。
int n=50000;
float *x = malloc(n*n*sizeof(float));
// there is segmentation fault:
int i, j;
for (i=0; i<n; i++){
for (j=0; j<n; j++){
x[i*n+j] = random() / (floa