當前位置:首頁 » 編程軟體 » 編譯中的指針錯誤怎麼修改

編譯中的指針錯誤怎麼修改

發布時間: 2022-07-23 06:44:48

⑴ 用指向數組的指針時 出現錯誤,怎樣解決。。。。

1、字元串的復制不能用等號的啊,要用strcpy:strcpy(*(p+max), *(p+x));
2、main中的循環for(int j=0;j<=n;j++),這個不對,應該沒有等號,要不然要多一次循環
由於輸入n後回車的問題可以在之前就把這個回車符幹掉
3、sort中的y值應該從x+1開始,而且結果條件少了一個等號,你想啊,輸入3個數的話,n-2為1,條件為 x<1 你寫的程序只能比較一次,3個字元串如何一次能比較出結果?
4、直接給你貼上程序
void sort(char (*p)[20],int n)
{
for(int x=0;x<=n-2;x++)
{
for(int y=x+1;y<=n-1;y++)
{
if(strcmp(*(p+x),*(p+y))>0)
{
char tmp[20] = {0};
strcpy((char*)tmp, (char*)(*(p+x)));
strcpy((char*)(*(p+x)),(char*)(*(p+y)));
strcpy((char*)(*(p+y)),(char*)tmp);
}
}
}
}
int main()
{
int n;
char tmp[20];
char a[50][20],*p[50];
int i;
cout<<"請輸入要排序的字元數組個數:";
cin>>n;
cin.getline(tmp,20);
for(i=0;i<n;i++)
p[i]=a[i];
for(i=0;i<n;i++)
cin.getline(p[i],20);
sort(a,n);
for(int j=0;j<n;j++)
cout<<a[j]<<'\n';
system("pause");
return 0;
}

⑵ C++語言指向函數的指針編譯錯誤

#include<stdio.h>
#include<stdlib.h>
int main()
{
void operate(int,int,int(*)(int ,int));
int max(int , int),min(int , int );
int a,b;
printf("Please input two numbers:\n");
scanf("%d %d",&a,&b);
operate(a,b,max);
system("pause");
return 0;
}
int max(int a,int b)
{
if(a>b)
return(a);
else
return(b);
}
int min(int a,int b)
{
if(a>b)
return(b);
else
return(a);
}
void operate(int x,int y,int(*fun)(int ,int ))
{
printf("%d\n",(*fun)(x,y));
}

⑶ 求問c語言linux下編譯 段錯誤 不知道哪的指針出錯了

你沒有為char* word指針分配內存,因此,指向原字元串中的某個位置。

但是,c字元串是必須以\0結尾的。

⑷ 函數指針問題:簡單的C程序,不知道為什麼編譯報錯,求高手解答啊,謝謝了!!

樓主你好
因為你自定義的函數filefunc、editfunc的返回值類型都是void型的
與你定義的函數指針的返回值類型int不匹配 所以將int改為void就行了
#include<stdio.h>
#include<stdlib.h>
void filefunc()
{
printf("njksjk\n");
}
void editfunc()
{
printf("nsjknjk\n");
}
int main()
{
typedef void (*funcp)();//void改為int
funcp p=filefunc;
p();
p=editfunc;
p();
system("pause");
return 0;
}
希望能幫助你哈

⑸ C語言中的指針問題

這樣的"xxxx"應該叫做字元串常量,是存儲在常量區域的,所以不應該修改它。
char a[]="don't know"
是定義了一個數組,數組內的數據復制了字元串的內容。
char *a="don't know"
第二種編譯的時候就應該給你警告了,不能用非常量指針指向一個常量,應該是這樣
const char *a="don't know"
所以不能通過指針改變它。

⑹ 函數返回指針編譯錯誤

L可以當數組一樣用,可以用L[0]的方式訪問

至於為什麼出錯,要看你的程序是怎麼寫的,請寫出你的程序。
********************************************
L = (char*)malloc((n1+2)*sizeof(char));
改為
L = malloc((n1+2)*sizeof(char));

R = (char*)malloc((n2+2)*sizeof(char));
改為
R =malloc((n2+2)*sizeof(char));

int n1,n2,i,j; char* L,R;
改為
int n1,n2,i,j; char* L,*R;

⑺ keil中結構體函數指針編譯錯誤

lcd_write_data是進行寄存器操作,不能用指針,再寫一個函數實現字元串

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x); //表示第一行
}
else
{
LCD_Write_Com(0xC0 + x); //表示第二行
}
while (*s)
{
LCD_Write_Data( *s);
s ++;
}
}

⑻ 懂c語言的來看看,編譯通不過了,小弟實在找不出錯誤! 指針部分

1.getch()要加頭文件#include <conio.h> 也可以用 getchar()
2.樓主 注釋是用// 不是\\( \\錯誤 .c 50: 非法地使用浮點數在 find 函數中 \\→//)
3.定義的float *find(float (*p)[4])函數體中 float *po,i;
改成float *po;int i;
否則i不能自加自減,導致下面的 for(i=0;i<4;i++)不能執行

⑼ C語言指針問題 編譯的時候報錯

你的p1指針都沒有初始化,即你的p1指針都沒指向某個字元數組你就對它所指向的內存單元賦值,這在運行時肯定會出現你上面的錯誤的,所以,你要如下這樣做:
char b[100]; //定義一個字元數組b
p1=b;
.......
在第二個for循環前面,你還要使指針p1重新指向字元數組b的首元素地址,即
p=b;
.......

if(p1+i != p1+m-1-i) //這個判定條件也是錯的,p1是指針,指針是地址,不是指針所指向的內存單元的值,你這比較的是地址值是否相等,當然是不相等呀,應該改成:
if(*(p1+i) != *(p1+m-1-i)) //這才是指針所指向的內存單元的值的比較

熱點內容
華為平板怎麼儲存伺服器文件 發布:2025-02-06 12:49:21 瀏覽:479
php查詢結果數組 發布:2025-02-06 12:31:05 瀏覽:714
怎樣把照片壓縮打包 發布:2025-02-06 12:15:19 瀏覽:496
如何編譯java文件 發布:2025-02-06 12:05:58 瀏覽:237
九九乘法編程 發布:2025-02-06 12:05:05 瀏覽:519
台式機忘記開機密碼怎麼辦 發布:2025-02-06 11:58:01 瀏覽:871
android刷新按鈕 發布:2025-02-06 11:57:17 瀏覽:586
存儲過程有輸入參數和輸出參數 發布:2025-02-06 11:55:32 瀏覽:99
成績評選演算法 發布:2025-02-06 11:42:51 瀏覽:997
資料庫測試數據 發布:2025-02-06 11:31:05 瀏覽:824