當前位置:首頁 » 編程語言 » c語言指針數組賦值

c語言指針數組賦值

發布時間: 2022-04-28 10:27:29

c語言中將一個數組的值賦給另外一個數組,好像要用指針來賦值

錯誤的,不能用賦值語句將一個字元串常量直接給一個字元數組賦值。

chars[20];

charss[]="hello";

s=ss;錯誤原因是:是您不能使用賦值語句將一個字元數組直接賦值給一個字元串數組,也就是說,必須使用strcpy()函數來實現一個字元串的副本(在c語言中,但是在c++的string類中,上面的賦值是正確的)。

因為賦值字元「=」右邊的表達式也可以是賦值表達式,下面的形式變數是=(變數=表達式);這是真的,所以它是嵌套的。展開後的一般形式為:variable=variable=…=表達式;例如:a=b=c=d=e=5;根據賦值運算符的正確嚙合,其有效等價為:e=5;D=e;C=d.B=C.A=B;

Chara[]="toyou";正確的理由:因為當你聲明一個數組變數時,你只是為它騰出空間並初始化它,這是c語法。

⑵ C語言指針賦值的問題(關於數組的賦值)

指針只是申明了而沒有初始化。
p是指針,*p是取p指向的地址的內容。
你可以這樣寫:
char
c
=
0;
char
*p
=
&c;
//初始化
*p
=
s[0];
也可以這樣寫:
char
*p
=
&s[0];//初始化
或者
char
*p
=
new
char(s[0]);//分配內存,初始化
delete
p;
也可以這樣寫:
char
s[0];
char
*p
=
s;//p指向s數組

⑶ C語言字元指針數組賦值問題

char*
p_str[3],p_str是一個指針數組。
修改前,實際存儲空間只有數組a,p_str中的三個指針都為a的地址,所以後面輸入的會把前面的覆蓋,而且輸出時都是a中的內容。
修改後
p_str[i]=(char*)malloc(sizeof(p_str)*10);
p_str中的指針指向新分配的存儲空間了,但是為嘛下一句輸入卻要用p呢?這不搭配,scanf("%s",p_str[i])
才和這句搭配。另外sizeof(p_str)是12,因為是一個存放3個指針的數組。似乎和邏輯不符合,應該是sizeof(char)才對。
//scanf("%s",p);
//p_str[i]=p;
或者可以改成這樣
for(int i=0; i<3; i++)
{
p = (char*)malloc(sizeof(char)*10);
scanf("%s", p);
p_str[i] = p;
}

⑷ C語言 怎麼把指針的值 賦給另一個數組

1.
不能把數組的首地址賦給另一個數組。因為數組名是常量指針類型,初始化之後是不能夠被修改的。
2.
有兩種辦法實現類似功能,一種是創建指針變數,把地址直接賦值指針變數:
例如
int
a[100];
int
*b=a;
第二種就是直接用循環一一復制每個元素。
例如
for(i=0;i
評論
0
0
載入更多

⑸ c語言結構體中指針數組怎樣賦值

看Unix/Linux上的man:
Standard
C
Library
Functions
gets(3C)
NAME
gets,
fgets
-
get
a
string
from
a
stream
SYNOPSIS
#include
char
*gets(char
*s);
char
*fgets(char
*s,
int
n,
FILE
*stream);
DESCRIPTION
The
gets()
function
reads
bytes
from
the
standard
input
stream
(see
intro(3)),
stdin,
into
the
array
pointed
to
by
s,
until
a
newline
character
is
read
or
an
end-of-file
con-
dition
is
encountered.
The
newline
character
is
discarded
and
the
string
is
terminated
with
a
null
byte.
....
gets是標准庫函數,要求傳入的是一個數組的地址。其實是要求caller應當分配空間給他。你的結構體中指針數組指向了已經分配好的內存嗎?如果沒有就別想了。想用就自己先給他空間

⑹ C語言如何給指針數組動態賦值

可以試試再創建一個char類型的二維數組,如char
temp[16][16],然後分別把temp[0
...
15]的每一個元素temp[...][0...14]賦上'a'
+
隨機數值(0
~
25的)。再把temp[...][15]賦值為'\0'。最後把str[0...15]分別指向temp[0...15]

⑺ 請問C語言 char類型的指針要怎麼賦值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *source = malloc(20*sizeof(char);
printf("Please input source \n");
scanf("%s",source);//f方法三
printf("%s\n",source);
char *temp = "my input source"
sprintf(source,"%s",temp);//方法一
printf("%s\n",source);
strcpy(source,temp);//方法二
printf("%s\n",source);
return 0 ;
}
指針是無法存放字元串的,只有指針指向的那塊空間才能存放字元串,所以我第一句話給它開辟了20個空間,這樣就可以給指針指向的那塊空間賦值了,謝謝
另外給你一個建議 char *a = NULL,*b =NULL,*c =NULL;這樣的寫法是不規范的,很容易出錯。標准形式應該是char *a= NULL;
char *b = NULL;
char *c = NULL;

⑻ C語言 如何給字元指針數組賦值

你那樣只是定義了5個指針,並沒有給每個指針分配相應的內存空間,當然會出錯
gets函數的參數是一個字元指針,應該用gets(p[i]);
char
*p[5];
char
*d;
char
p1[5][20];
int
i,j;
printf("輸入5個城市\n");
for(i=0;i<5;i++)
{
p[i]
=
p1[i];
gets(p[i]);
}
.......

⑼ C語言指針的賦值問題

指針在用要注意初始化,例如:

int *p;

p為指針,地址是未知的,如果直接賦值

*p=a;這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要數據,所以避免這種危險,在定義指針時注意初始化,也就是賦值。

可以int *p=&a;

或者int *p;

p=&a;

然後再對p進行操作

有錯。

注意大小寫,還有

int a=9;

int *p;

p=&a;//這個是指針指向a

*p=8;

這樣就對了。

(9)c語言指針數組賦值擴展閱讀:

指針的賦值

int *p;

int a;

int b[1];

p = &a;

p = b;

指針的賦值,「=」的左操作數能夠是*p,也能夠是p。

當「=」的左操作數是*p時,改變的是p所指向的地址存放的數據;

當「=」的左操作數是p時,改變的是p所指向的地址。

數組的變數名b表示該數組的首地址,因此p=b;也是正確的

同類型的指針賦值:

int val1 = 18,val2 = 19;

int *p1,*p2;

p1 = &val1;

p2 = &val2;

p1 = p2; //注意啦,p1指向了val2,而沒有指向val1

備註:字元串與指針的初始化和賦值

初始化:

char *cp = "abcdefg"; //這個初始化過程,是將指針cp指向字元串的首地址,而並非傳遞字元串的值。由於,在C語言裡面,沒有總體處理一個字元串的機制

賦值:

cp = "abcdefg";

*cp=」abcdefg」 ;//錯誤!字元串常量傳遞的是它的首地址,不能夠通過*cp改動該字元串的值,由於該字元串為常量,而它僅僅是簡單的將指針指向該字元串常量。

⑽ 請問在c語言中如何通過輸入字元串為字元指針數組賦值

首先確定是字元指針數組還是字元數組指針,前者是一個數組,數組每個元素都是一個字元指針,後者是一個指向字元數組的指針。
若是指向字元數組的指針,則很簡單,使用scanf("%s",
str);函數獲取輸入的字元串,然後使用字元串拷貝函數strcpy(stc,
dest);將獲取的字元串拷貝到指定地址的字元指針數組中,拷貝過程中注意檢查訪問數組是否越界,若越界,則需要在字元數組的最後一個元素賦值為結束符'\0'。
若是賦值
字元指針數組,那麼就是對數組中的某一個元素指向的字元數組進行拷貝賦值,其過程與前者相同。

熱點內容
不用internet打開ftp 發布:2025-05-15 23:06:00 瀏覽:152
sql字元串取數字 發布:2025-05-15 22:57:45 瀏覽:123
推薦編程課 發布:2025-05-15 22:34:12 瀏覽:617
表拒絕訪問 發布:2025-05-15 22:29:37 瀏覽:978
電腦怎樣解壓文件 發布:2025-05-15 22:25:32 瀏覽:439
dns伺服器怎麼看 發布:2025-05-15 22:17:27 瀏覽:151
3dm的壓縮包 發布:2025-05-15 22:09:23 瀏覽:662
和存儲字長 發布:2025-05-15 21:54:09 瀏覽:515
用什麼寫c語言 發布:2025-05-15 21:35:56 瀏覽:418
linux讀取u盤 發布:2025-05-15 21:32:13 瀏覽:508