❶ 關於c語言 指針賦值問題
&是一元運算,取變數地址的操作,間接訪問操作用運算符號*.&他返回操作數的內存地址,可以賦給類型合適的指針./ 列如int x int *px px=&x
將X的內存地址賦給指針變數px,該賦值語句表示 指針px制向變數X, *運算符與&運算符剛好相反,它也是一遠運算符.用語返回指針指向的內存地址中存的值!
❷ C語言對指針賦值有多少種方法
不管是在什麼樣的系統下 ,都要區分 指針本身 和指針所指向數據的類型
如 定義 char *p; 則p指向的內容是 字元型的 但是絕不意味著p是字元型的 也就是 p不一定是1個位元組 當然 int *p 也是如此;
你可以用sizeof 來查看
比如定義 type(如char int long...) *p ; 你用 sizeof(*p) sizeof(p)
如在 32bit系統中,無論前面的type是整形、實形……, sizeof(p)的值都一樣都是4;在8bit系統中(如單片機系統) 應該是1或2(這個應該跟單片機的型號相關不同的單片機系統 應該也不一樣)
這就是說 指針本身 是不區分類型的 它只是一個代號 用來指向不同的東西
就像 可能一個班級50人, 一個100人 不管班級的人數有多少,它都叫1班、2班 都是倆字
❸ c語言中指針賦值
vc有內存安全檢查,如果你沒有申請的內存空間是不能訪問的,在這段程序中
char *a只是聲明了一個char的指針,而且沒有初始化,它指向的空間是一個不安全的內存空間,而 *a='c'是往這個未知空間里寫入一個'c',vc安全檢查到這里就會報錯。
而tc沒有安全檢查所以可以運行。
❹ C語言指針賦值問題
沒辦法做到。因為a是一個指針,佔用4個位元組,而b是一個字元變數,佔用一個位元組。不能將指針的值賦給字元變數。
當然,如果你將b聲明為一個字元數組,那麼可以將"abc"放到字元數組中。
❺ C語言指針怎麼賦值呢
要改p–>a的值,和在這個函數裡面是一樣的
直接
p–>a=要賦值的值
這樣就可以了
唯一需要注意的就是要賦值的是結構體指針還是結構體變數,如果不是指針那就要改成點了
p.a這樣
❻ C語言程序設計指針變數賦值
int
*p;中的「*」說明定義的一個變數p是指針類型的。
而
*p中的「*」是一種操作,是取值操作。即去指針指向的那個值。
*p可看作是一個整形的變數。a則可以看成是一個指針。
❼ 請問C語言這個指針要怎麼賦值
都不知道你的程序要表達神馬意思,是查找子串還是查找字元,還是比較字元。
子函數是比較字元串,主函數只輸入字元,輸出字元。
return source[i]; 錯誤, 這里是返回字元,但是函數要求返回指針。即 source+i,但是scource是const變數。所以用強轉 return (char *)(source+i);
source=getchar(); /////////輸入字元不能賦予指針。只能地址,要賦值就 *source=getchar();
chars=getchar(); ///同理
改成:
*source=getchar();
*chars=getchar(); 之後記得開辟空間,就算是字元也得要開辟一個。
後面不能再用find_ == NULL判斷了,因為find_不會指向NULL的了
gets() 錯誤
///////////////////////////////////////
//////
///////////////////////////////////////
❽ 在C語言中能否直接給指針指向的數據賦值為什麼
可以,但int *p;*p=7;這樣不行。
因為「能直接給指針指向的數據」賦值,而這里的p還沒有指向,所以不能賦值,這種指針有個名字叫「懸浮指針」,是不能給它賦值的。
這樣才可以:
int a,*p=&a;*p=7;
實際上就是使a等於了7。
(8)c語言指針賦值擴展閱讀:
注意事項
也可以使用賦值運算符為指針變數賦值,但要保證兩個指針變數的類型相同。
假設有如下變數定義:
int i,j,*p,*q;p=&i;q=&j;
這兩句將變數i和j的地址分別賦值給指針變數p和q;
執行了q=p後,執行該條語句,指針變數p和q都指向了同一個變數i,因此指針變數p和q中存放的都是變數i的地址&i。變數i此時並沒有初始化,只為其分配了內存單元。
注意理解:q=p;和*q=*p
前者為指針變數q賦值,即將指針變數p中存放的某個變數的地址賦值給q。顯然,賦值後,q和p就指向了同一個變數。
後者將p指向變數的賦值給q指向的變數。
例子:
p=&i;
q=&j;
i=2;
j=3;
❾ 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
❿ C語言指針字元串賦值
在C語言中並沒有字元串這個類型。所說的字元串就是字元數組。也就是char類型的數組。
與普通數組不同的,字元串必須以'\0'作為結束符。
而在C語言中,類型為T的一維數組,其首地址等效於該類型的一維指針,即T*型。
於是字元串,也就是字元數組,首地址就可以當做char *型使用了。
事實上,在庫函數以及大多數使用到字元串作為參數的函數中,其參數都是char *型的。