Frågan 23 okt. 2003 00:41 #1 Hej
Hur gör man när man vill skicka till en funktion en pekare till en tvådimensionell array i C?
Jag har försökt med detta men får felmeddelande.
void func(int arr[][])
{
printf("Jippi!");
}
void main(void)
{
int arr[10][5];
func(arr);
return 0;
}
G GunnarD Medlem sedan juni 2001 4 290 inlägg Vad får du för felmeddelande?
Tog din kod och klistrade in i en fil på min linux burk, kompilerade fick 2st varningar:
aaa.c:14: warning: `return' with a value, in function returning void
aaa.c:9: warning: return type of `main' is not `int'
Jag ändrade så att main returnerar en int, den skall göra så enligt standarden plus att du i main har ett "return 0" rad.
Nu fungerar den.
void func(int arr[][])
{
printf("Jippi!");
}
int main(void)
{
int arr[10][5];
func(arr);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define spelplan 5
#define true 1
#define false 0
int kollaSpel(int position[])
{
return 0;
}
void skrivUtSpel(int position[][])
{
int rad, kolumn;
for(rad=0; rad<=spelplan; rad++)
{
for(kolumn=0;kolumn<=spelplan; kolumn++)
{
if(position[rad][kolumn]==0)
{
printf("[ ] ");
}
else
{
printf("[%i] ", position[rad][kolumn]);
}
}/*Avslutar kolumn utskriften*/
printf("\n");
}/*Avslutar rad utskriften*/
}
int markera(int position[], int spelare, int inmPosition[])
{
int markera=1;
if(inmPosition[0]<=spelplan && inmPosition[1]<=spelplan && inmPosition[0]>0 && inmPosition[1]>0){
if(position[(inmPosition[0]-1)][(inmPosition[1])-1]==0){
position[(inmPosition[0]-1)][(inmPosition[1]-1)]=spelare;
markera=0;
}
}
return markera;
}
int main(void)
{
int position[7][4]={0}, inmPosition[2], spelare=1, spel=false, giltigt;
do
{
skrivUtSpel(position);
do{
printf("\nSpelare %i\nVilken position vill du markera? ", spelare);
scanf("%i %i", &inmPosition[0], &inmPosition[1]);
giltigt = markera(position, spelare);
if(giltigt==1){
printf("Ogiltigt drag!\n");
}
}while(giltigt==1);
/*Byt spelare*/
if(spelare==1){
spelare=2;
}
else{
spelare=1;
}
spel=kollaSpel(position);
}while(spel==false);
return 0;
}
size of type 'int[]' is unknown or zer
får jag på flera ställen
G GunnarD Medlem sedan juni 2001 4 290 inlägg Hinner inte felsöka mera nu (återkommer under dagen, måste jobba lite också :) ) men jag får följande felmeddelanden som kanske kan vara till bättre hjälp:
aaa.c: In function `skrivUtSpel':
aaa.c:22: invalid use of array with unspecified bounds
aaa.c:28: invalid use of array with unspecified bounds
aaa.c: In function `markera':
aaa.c:40: subscripted value is neither array nor pointer
aaa.c:41: subscripted value is neither array nor pointer
aaa.c: In function `main':
aaa.c:62: warning: passing arg 1 of `markera' from incompatible pointer type
aaa.c:62: too few arguments to function `markera'
aaa.c:77: warning: passing arg 1 of `kollaSpel' from incompatible pointer type
make: *** [aaa] Error 1
Självklar t ska du jobba :) Ingen som vet varför? Måste redovisa denna labb innan 13.15